python——二叉树的层次遍历

来源:互联网 发布:修改虚拟网卡mac地址 编辑:程序博客网 时间:2024/06/05 18:36
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'%stree=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]]
原创粉丝点击