将一个二叉树逐行遍历,但是遍历方向逐行翻转

import time
from collections import defaultdict


class Node(object):
    def __init__(self, value, left, right, depth):
        self.value = value
        self.left = left
        self.right = right
        self.depth = depth

rows = defaultdict(list)

def get_btree_node(node):
    value = node.value
    left = node.left
    right = node.right
    depth = node.depth
    return value, left, right, depth

def get_btree_all(node):
    global rows
    v, l, r, d = get_btree_node(node)
    rows[d].append(v)
    if l is not None:
        get_btree_all(l)
    if r is not None:
        get_btree_all(r)

n_i = Node(9, None, None, 3)
n_h = Node(8, None, None, 3)
n_f = Node(6, n_h, n_i, 2)
n_g = Node(7, None, None, 2)
n_e = Node(5, None, None, 2)
n_d = Node(4, None, None, 2)
n_b = Node(2, n_d, n_e, 1)
n_c = Node(3, n_f, n_g, 1)
n_a = Node(1, n_b, n_c, 0)
get_btree_all(n_a)

def loop_print(values, direction):
    res_list = []
    for k, v in values.items():
        for i in v[::direction]:
            res_list.append(i)
        direction = -1 * direction
    print(res_list)


loop_print(rows, 1)