LeetCode144-二叉树的前序遍历
原题链接:https://leetcode-cn.com/problems/binary-tree-preorder-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 preorderTraversal(self, root: Optional[TreeNode]) -> List[int]: 9 def preorder(root: TreeNode): 10 if not root: 11 return 12 res.append(root.val) 13 preorder(root.left) 14 preorder(root.right) 15 res = list() 16 preorder(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 preorderTraversal(self, root: Optional[TreeNode]) -> List[int]: 10 # 1、每次从栈中弹出一个节点,记作cur 11 # 2、打印(处理)cur 12 # 3、先右再左入栈 13 # 4、周而复始 14 res = list() 15 if root: 16 stack = deque() 17 stack.append(root) 18 while stack: 19 head = stack.pop() 20 res.append(head.val) 21 if head.right: 22 stack.append(head.right) 23 if head.left: 24 stack.append(head.left) 25 return res
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】