目录
一、题目
给定一个二叉树,返回它的 后序遍历。
二、示例
示例:
输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1]
三、思路
1、递归。后序遍历:左-->右-->根。
2、非递归,栈的思想,先进后出。
四、代码
1、
# Definition for a binary tree node.
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
class Solution:
def postorderTraversal(self, root: TreeNode):
if root is None:
return []
return self.postorderTraversal(root.left) + self.postorderTraversal(root.right) + [root.val]
if __name__ == '__main__':
root = TreeNode(1)
root.left = None
root.right = TreeNode(2)
root.right.left = TreeNode(3)
s = Solution()
ans = s.postorderTraversal(root)
print(ans)
2、
# Definition for a binary tree node.
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def postorderTraversal(self, root: TreeNode):
res = []
if root is None:
return res
stack = [root]
while (stack):
root = stack.pop()
if root is None:
continue
stack.append(root.left)
stack.append(root.right)
res.append(root.val)
res.reverse()
return res
if __name__ == '__main__':
root = TreeNode(1)
root.left = None
root.right = TreeNode(2)
root.right.left = TreeNode(3)
s = Solution()
ans = s.postorderTraversal(root)
print(ans)