Leetcode 145 python 二叉树的后序遍历

题意: 给定一个二叉树,返回它的后序遍历。
示例:

输入: [1,null,2,3]  
   1
    \
     2
    /
   3 

输出: [3,2,1]

中序遍历首先遍历左子树,然后访问根结点,最后遍历右子树。若二叉树为空则结束返回,否则:
(1)后序遍历左子树
(2)后序遍历右子树
(3)访问根结点

方法一: 递归

class Solution:
    def postorderTraversal(self, root: TreeNode) -> List[int]:
        if root == None:
            return []
        res = []
        res += self.postorderTraversal(root.left)
        res += self.postorderTraversal(root.right)
        res.append(root.val)
        return res

方法二: 入栈出栈,列表从前往后实现的是左右根遍历,从后往前实现的是根右左的遍历,换个角度思考算法

class Solution:  
    def inorderTraversal(self, root):
        """
        :type root: TreeNode
        :rtype: List[int]
        """
        result = list()  #存储最后结果
        if root == None:
            return result
        
        stack = list()  #栈
        while stack or root:
            if root != None:   
                stack.append(root)
                root = root.right
            else:
                root = stack.pop()
                result.append(root.val)
                root = root.right
               
                root = stack.pop()
                stack.append(root)

        return result
上一篇:Linux中的SSH免密码登录设置


下一篇:linux ssh 多机 互相 通信