前中後序遞迴遍歷樹的體會 with Python
阿新 • • 發佈:2018-11-14
- 前序:跟->左->右
- 中序:左->根->右
- 後序:左>右->根
採用遞迴遍歷時,編譯器/直譯器負責將遞迴函式呼叫過程壓入棧並保護現場,在不同位置處理根節點即可實現不同順序的遍歷。
import Tree def preOrderTraversal(root): if root: # do some processing on root here (in front of traversal) print(root.val) preOrderTraversal(root.left) preOrderTraversal(root.right)def inOrderTraversal(root): if root: inOrderTraversal(root.left) # do some processing on root here print(root.val) inOrderTraversal(root.right) def postOrderTraversal(root): if root: postOrderTraversal(root.left) postOrderTraversal(root.right)# do some processing on root here print(root.val) nums = [6, 4, 7, 2, 5, None, None, 1, 3] root = Tree.buidTree(nums) preOrderTraversal(root) print('\n') inOrderTraversal(root) print('\n') postOrderTraversal(root)
前中後序遍歷結果分別如下:
6 4 2 1 3 5 7
1 2 3 4 5 6 7
1 3 2 5 4 7 6