樹是\(n\)(\(n\ge 0\))個結點的有限集。在任意一棵非空樹中,有且只有一個根結點。python
二叉樹是有限個元素的集合,該集合或者爲空、或者有一個稱爲根節點(root)的元素及兩個互不相交的、分別被稱爲左子樹和右子樹的二叉樹組成。數據結構
實現如下二叉樹,並進行先序遍歷、中序遍歷和後序遍歷。
post
class BinaryTreeNode(object): def __init__(self, data=None, left=None, right=None): self.data = data self.left = left self.right = right class BinaryTree(object): def __init__(self, root=None): self.root = root def is_empty(self): return self.root == None def preOrder(self,BinaryTreeNode): if BinaryTreeNode == None: return # 先打印根結點,再打印左結點,後打印右結點 print(BinaryTreeNode.data) self.preOrder(BinaryTreeNode.left) self.preOrder(BinaryTreeNode.right) def inOrder(self,BinaryTreeNode): if BinaryTreeNode == None: return # 先打印左結點,再打印根結點,後打印右結點 self.inOrder(BinaryTreeNode.left) print(BinaryTreeNode.data) self.inOrder(BinaryTreeNode.right) def postOrder(self,BinaryTreeNode): if BinaryTreeNode == None: return # 先打印左結點,再打印右結點,後打印根結點 self.postOrder(BinaryTreeNode.left) self.postOrder(BinaryTreeNode.right) print(BinaryTreeNode.data) n1 = BinaryTreeNode(data="D") n2 = BinaryTreeNode(data="E") n3 = BinaryTreeNode(data="F") n4 = BinaryTreeNode(data="B", left=n1, right=n2) n5 = BinaryTreeNode(data="C", left=n3, right=None) root = BinaryTreeNode(data="A", left=n4, right=n5) bt = BinaryTree(root) print('先序遍歷') bt.preOrder(bt.root) print('中序遍歷') bt.inOrder(bt.root) print('後序遍歷') bt.postOrder(bt.root)
程序運行結果:spa
先序遍歷 A B D E C F 中序遍歷 D B E A F C 後序遍歷 D E B F C A [Finished in 0.1s]