前中后序递归遍历树的体会 with Python
- 前序:跟->左->右
- 中序:左->根->右
- 后序:左>右->根
采用递归遍历时,编译器/解释器负责将递归函数调用过程压入栈并保护现场,在不同位置处理根节点即可实现不同顺序的遍历。
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