LeetCode145-二叉树的后序遍历
原题链接:https://leetcode-cn.com/problems/binary-tree-postorder-traversal/
解法一:递归,需了解树的递归式遍历
1 # Definition for a binary tree node. 2 # class TreeNode: 3 # def __init__(self, val=0, left=None, right=None): 4 # self.val = val 5 # self.left = left 6 # self.right = right 7 class Solution: 8 def postorderTraversal(self, root: Optional[TreeNode]) -> List[int]: 9 def postorder(root: TreeNode): 10 if not root: 11 return 12 postorder(root.left) 13 postorder(root.right) 14 res.append(root.val) 15 res = list() 16 postorder(root) 17 return res
解法二:采用辅助栈
1 # Definition for a binary tree node. 2 # class TreeNode: 3 # def __init__(self, val=0, left=None, right=None): 4 # self.val = val 5 # self.left = left 6 # self.right = right 7 from collections import deque 8 class Solution: 9 def postorderTraversal(self, root: Optional[TreeNode]) -> List[int]: 10 # 需要创建一个中转栈,即为收集栈 11 # 1、每次弹出当前栈,即为cur 12 # 2、cur放入收集栈 13 # 3、先左再右入栈 14 # 4、周而复始 15 # 5、弹出收集栈 16 res = list() 17 if root: 18 s1 = deque() 19 s2 = deque() 20 s1.append(root) 21 while s1: 22 cur = s1.pop() 23 s2.append(cur) 24 if cur.left: 25 s1.append(cur.left) 26 if cur.right: 27 s1.append(cur.right) 28 while s2: 29 res.append(s2.pop().val) 30 return res
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】