• 前中后序递归遍历树的体会 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('
    ')
    inOrderTraversal(root)
    print('
    ')
    postOrderTraversal(root)

    前中后序遍历结果分别如下:
    6 4 2 1 3 5 7

    1 2 3 4 5 6 7

    1 3 2 5 4 7 6

  • 相关阅读:
    LeetCode-Letter Combinations of a Phone Number
    LeetCode-Sort Colors
    C++Memset误区
    LeetCode-Valid Palindrome
    LeetCode-Longest Consecutive Sequence
    C++豆知识索引
    C++ 哈希表
    LeetCode-Sum Root to Leaf Numbers
    LeetCode-Word LadderII
    LeetCode-Word Ladder
  • 原文地址:https://www.cnblogs.com/gradual/p/9958088.html
Copyright © 2020-2023  润新知