[Leetcode]145. Binary Tree Postorder Traversal
这是Leetcode第145题,求二叉树的后序遍历。后序遍历相对于先序遍历以及中序遍历,非递归求解方式更加复杂。这里,我使用的方法是双压栈法。
具体代码如下:
class Solution:
def postorderTraversal(self, root):
"""
:type root: TreeNode
:rtype: List[int]
"""
#后续遍历的非递归解法,双压栈版
res=[]
stack=[]
if not root:
return res
stack.append(root)
stack.append(root)
while stack:
p=stack.pop()
if stack and p==stack[-1]:
if p.right:
stack.append(p.right)
stack.append(p.right)
if p.left:
stack.append(p.left)
stack.append(p.left)
else:
res.append(p.val)
return res