【LeetCode】Binary Tree Preorder Traversal
2024-10-18 22:35:08
Binary Tree Preorder Traversal
Given a binary tree, return the preorder traversal of its nodes' values.
For example:
Given binary tree {1,#,2,3}
,
1
\
2
/
3
return [1,2,3]
.
Note: Recursive solution is trivial, could you do it iteratively?
Solution:
递归解法很简单:
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None class Solution:
# @param {TreeNode} root
# @return {integer[]}
def preorderTraversal(self, root):
if root == None:
return []
else:
return [root.val] + self.preorderTraversal(root.left) + self.preorderTraversal(root.right)
迭代版本也是常规的将递归改成迭代的版本:
用一个栈来模拟递归的过程,注意栈 FILO 的特点。所以,对于当前根,要把右子树先加入栈,然后再把左子树加入栈。
前序遍历的顺序是:根 - 左子树 - 右子树。
代码如下:
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None class Solution:
# @param {TreeNode} root
# @return {integer[]}
def preorderTraversal(self, root):
stack = []
path = []
if root != None:
stack.append(root)
while stack != []:
e = stack.pop()
path.append(e.val)
if e.right != None:
stack.append(e.right)
if e.left != None:
stack.append(e.left)
return path
最新文章
- 弹窗插件layer
- 李洪强iOS开发之下载
- HDU 5486 Difference of Clustering 图论
- mirantis fuel 学习
- 去掉 Warning:$HADOOP_HOME is deprecated
- 你不知道的JS(3)来聊聊this
- hbase 快速开发
- [java变量] - 字符串数组转long型数组
- 力扣(LeetCode)70. 爬楼梯
- 补偿接口中循环一直执行sql的问题
- RFS实例登录126邮箱/利用cookie登陆百度
- hdu 5524 Subtrees dfs
- SQLSERVER数据库备份操作和还原操作做了什么
- idea注册码激活防和谐
- Python笔记 #04# Methods
- mysql sql语句高级写法
- (经典) K&;R的名著<;<;C程序设计语言>;>;二分查找
- 3.C++和C混合编程
- 吐泡泡(2018年全国多校算法寒假训练营练习比赛(第二场)+栈模拟)+Plug-in(codeforces81A+栈模拟)
- for循环中 i++和++i 是否有区别?