二叉樹的各種遍歷(遞迴實現版本)
阿新 • • 發佈:2018-12-16
- 先序,中序,後序遍歷
先序:先根,後左子樹,後右子樹
中序:先左子樹,後根,後右子樹
後序:先左子樹,後右子樹,後根
遞迴程式碼實現:
class TreeNode(object): def __init__(self, x): self.val = x self.left = None self.right = None class Solution(object): def inorderTraversal(self, root): """ :type root: TreeNode :rtype: List[int] """ # res1作為全域性變數傳到函式裡,在執行過程中發生變化 res1 = [] self. recursive_inorder (root, res1) print(res1) return res1 def recursive_inorder(self, root, res):#遞迴遍歷 if root: # 先序 # res.append(root.val) self.recursive_inorder(root.left, res) # 中序 # res.append(root.val) self.recursive_inorder(root.right, res) # 後序 # res.append(root.val) if __name__ == '__main__': S = Solution() l1 = TreeNode(1) l2 = TreeNode(2) l3 = TreeNode(3) l4 = TreeNode(4) l5 = TreeNode(5) l6 = TreeNode(6) l7 = TreeNode(7) root = l1 l1.left = l2 l1.right = l3 l2.left = l4 l2.right = l5 l3.left = l6 l3.right = l7 x = S.inorderTraversal(root)