Example:
        >>> from utool.experimental.euler_tour_tree_avl import *  # NOQA
        >>> self = EulerTourTree(range(10))
        >>> self._assert_nodes()
        >>> root = self.root
        >>> node = self.get_node(5)
        >>> self.print_tree()
        >>> print('node = %r' % (node,))
        >>> rpath = backtrace_root(node)
        >>> print('rpath = %r' % (rpath,))

def backtrace_root(node):
    """
    Example:
        >>> from utool.experimental.euler_tour_tree_avl import *  # NOQA
        >>> self = EulerTourTree(range(10))
        >>> self._assert_nodes()
        >>> root = self.root
        >>> node = self.get_node(5)
        >>> self.print_tree()
        >>> print('node = %r' % (node,))
        >>> rpath = backtrace_root(node)
        >>> print('rpath = %r' % (rpath,))
    """
    # Trace path to the root
    rpath = []
    prev = node
    now = node.parent
    while now is not None:
        if now.left is prev:
            rpath.append((now, 0))
        elif now.right is prev:
            rpath.append((now, 1))
        else:
            raise AssertionError('impossible state')
        prev = now
        now = now.parent
    return rpath