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
复制代码

 

posted @   CaptainDragonfly  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示