按层打印二叉树 牛客网

来源:互联网 发布:电商美工工资待遇 编辑:程序博客网 时间:2024/04/26 23:58

采用last和nlast来作为换行的标记;
last 指向上一行最右边的数,nlast指向这一行最右边的数

class TreeNode:    def __init__(self,x):        self.val = x        self.left = None        self.right = Noneclass Tree:    def __init__(self,node=None):        self.root  = node    def print1(self):        queue = collections.deque()        queue.append(self.root)        last = t1        while(queue):            node = queue.popleft()            if (node):                if (node.left):                    queue.append(node.left)                    nlast = node.left                if (node.right):                    queue.append(node.right)                    nlast = node.right                print node.val,                if (node == last):                    last = nlast                    print ""if __name__ =="__main__":    t1 = TreeNode(1)    t1.left = TreeNode(2)    t1.right = TreeNode(3)    t1.left.left = TreeNode(4)    t1.right.left = TreeNode(5)    t1.right.right = TreeNode(6)    tree = Tree(t1)    tree.print1()
0 0