[LeetCode]题解(python):145-Binary Tree Postorder Traversal
题目来源:
https://leetcode.com/problems/binary-tree-postorder-traversal/
题意分析:
后序遍历一棵树,递归的方法很简单,尝试用非递归的方法。
题目思路:
后序遍历的顺序是,先左子树,再右子树,最后才是根节点。递归的思想很简单,那么非递归的方法也是利用栈来实现,后进先出,不过这里先进的应该是左子树,那么得到的结果是根节点,右子树接着左子树。最后将结果翻转就可以了。代码给的是非递归的方法。
代码(python):
# Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution(object): def postorderTraversal(self, root): """ :type root: TreeNode :rtype: List[int] """ ans = [] if root == None: return ans stack = [root] while len(stack) != 0: p = stack.pop() ans.append(p.val) if p.left: stack.append(p.left) if p.right: stack.append(p.right) ans.reverse() return ans