Leetcode 145. Binary Tree Postorder Traversal
问题描述二叉树的遍历后根序遍历,也就是
左右根
的顺序访问。
分别提供以下方法以及python代码:
递归的方式
class Solution:
def postorderTraversal(self, root):
"""
:type root: TreeNode
:rtype: List[int]
"""
ans = []
self.dfs(root,ans)
return ans
def dfs(self,root,ans):
if not root:
return
self.dfs(root.left,ans)
self.dfs(root.right,ans)
ans.append(root.val)
迭代的方式1
class Solution:
def postorderTraversal(self, root):
"""
:type root: TreeNode
:rtype: List[int]
"""
s = [root]
ans = []
while s:
curr = s.pop()
while(curr):
s.append(curr)
ans.append(curr.val)
curr = curr.right #先访问左边
if s:
curr = s.pop()
s.append(curr.left)
return ans[::-1] #把跟前序完全相反
迭代的方式2
class Solution:
def postorderTraversal(self, root):
"""
:type root: TreeNode
:rtype: List[int]
跟前序完全相反
"""
s = []
ans = []
while(s or root):
if(root):
s.append(root)
ans.append(root.val)
root = root.right
else:
curr = s.pop()
root = curr.left
return ans[::-1]