前中后序递归遍历树的体会 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

posted @ 2018-11-14 15:08  CliffRyan  阅读(266)  评论(0编辑  收藏  举报