Python版二叉樹實現
阿新 • • 發佈:2020-12-30
僅用於自己學習記錄
二叉樹
class Node: def __init__(self, item): self.elem = item self.lchild = None self.rchild = None``` class Binary_tree: def __init__(self, node=None): self.root = node def add(self, item): '''從上到下,從左到右新增元素,逐層查詢遍歷空值''' node = Node(item) if self.root is None: self.root = node return queue = [self.root] while queue: n = queue.pop(0) if n.lchild is None: n.lchild = node return else: queue.append(n.lchild) if n.rchild is None: n.rchild = node return else: queue.append(n.rchild) def breath_travel(self): '''廣度優先遍歷,逐層從左到右''' if self.root is None: return queue = [self.root] while queue: n = queue.pop(0) print(n.elem) if n.lchild: queue.append(n.lchild) if n.rchild: queue.append(n.rchild) def preorder(self, node=None): '''先序遍歷''' 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__': binary_tree = Binary_tree() binary_tree.add(0) binary_tree.add(1) binary_tree.add(2) binary_tree.add(3) binary_tree.add(4) binary_tree.add(5) binary_tree.add(6) binary_tree.add(7) binary_tree.add(8) binary_tree.add(9) binary_tree.add(10) binary_tree.breath_travel() binary_tree.preorder(binary_tree.root) print(' ') binary_tree.inorder(binary_tree.root) print(' ') binary_tree.postorder(binary_tree.root)``` ****