1. 程式人生 > >前中後序遞迴遍歷樹的體會 with Python

前中後序遞迴遍歷樹的體會 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