python(五)二叉树

来源:互联网 发布:asap2020软件 64bit 编辑:程序博客网 时间:2024/06/11 00:07
# coding:utf-8import randomclass Node(object):    def __init__(self, item):        self.elem = item        self.lchild = None        self.rchild = Noneclass Tree(object):    def __init__(self):        self.root = None    def add(self, item):        node = Node(item)        if self.root is None:            self.root = node            return        queue = [self.root]        while queue:            cur_node = queue.pop(0)            if cur_node.lchild is None:                cur_node.lchild = node                return            else:                queue.append(cur_node.lchild)            if cur_node.rchild is None:                cur_node.rchild = node                return            else:                queue.append(cur_node.rchild)    def breadth_travel(self):        if self.root is None:            return        queue = [self.root]        while queue:            cur_node = queue.pop(0)            print(cur_node.elem, end=" ")            if cur_node.lchild is not None:                queue.append(cur_node.lchild)            if cur_node.rchild is not None:                queue.append(cur_node.rchild)    def preorder(self, node):        if node is None:            return        print(node.elem, end=" ")        self.preorder(node.lchild)        self.preorder(node.rchild)    def inorder(self, node):        if node is None:            return        self.inorder(node.lchild)        print(node.elem, end=" ")        self.inorder(node.rchild)    def postorder(self, node):        if node is None:            return        self.postorder(node.lchild)        self.postorder(node.rchild)        print(node.elem, end=" ")if __name__ == "__main__":    seq = list(range(1, 100))    li = random.sample(seq, 20)    tree = Tree()    for j in range(0, 10):        tree.add(random.choice(li))    print("广度遍历")    tree.breadth_travel()    print("")    print("先序遍历")    tree.preorder(tree.root)    print("")    print("中序遍历")    tree.inorder(tree.root)    print("")    print("后序遍历")    tree.postorder(tree.root)    print("")

原创粉丝点击