1. 程式人生 > >python——二叉樹的層次遍歷

python——二叉樹的層次遍歷

class Node:
    def __init__(self,data,left=None,right=None):
        self.data=data
        self.left=left
        self.right=right

    #層次遍歷
    def lookup(self):
        queue = [self]
        l=[]
        while queue:
            current = queue.pop(0)
            l.append(current.data)
            if
current.left: queue.append(current.left) if current.right: queue.append(current.right) return l #分層列印樹 def printLevel(self): currentLevel=[self] val=[] while currentLevel: val.append([c.data for c in currentLevel]) nextLevel=[] for
i in currentLevel: if i.left: nextLevel.append(i.left) if i.right: nextLevel.append(i.right) currentLevel=nextLevel return val def __str__(self): s=self.printLevel() return
'%s'%s tree=Node(0, Node(1, Node(3, Node(7), Node(8)), Node(4, Node(9), Node(10))), Node(2, Node(5, Node(11), Node(12)), Node(6, Node(13), Node(14))) ) tree2=Node(0, Node(1, Node(3, Node(7), Node(8)), ), Node(2, Node(5, Node(11), Node(12)), Node(6)) ) print(tree.deep()) print(tree2) #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14] #[[0], [1, 2], [3, 5, 6], [7, 8, 11, 12]]