在python中将二叉树按先序遍历存储到列表中,给出代码和注释
时间: 2024-05-25 13:19:31 浏览: 68
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def preorderTraversal(root: TreeNode) -> List[int]:
"""
将二叉树按先序遍历存储到列表中
:param root: 根节点
:return: 先序遍历结果列表
"""
if not root:
return []
res = [] # 存储先序遍历结果的列表
stack = [root] # 辅助栈,用于迭代遍历二叉树
while stack:
node = stack.pop() # 弹出栈顶元素
res.append(node.val) # 将当前节点的值加入到结果列表中
# 将右子节点入栈,这样在弹出栈顶元素时,右子节点会先被遍历到
if node.right:
stack.append(node.right)
# 将左子节点入栈,这样在弹出栈顶元素时,左子节点会后被遍历到
if node.left:
stack.append(node.left)
return res
相关问题
用python代码给出将二叉树按先序遍历转化为链表的代码
以下是将二叉树按先序遍历转化为链表的Python代码:
```python
class Node:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
class Solution:
def flatten(self, root: Node) -> None:
"""
Do not return anything, modify root in-place instead.
"""
if not root:
return
if root.left:
self.flatten(root.left)
if root.right:
self.flatten(root.right)
temp = root.right
root.right = root.left
root.left = None
while root.right:
root = root.right
root.right = temp
```
希望能对你有所帮助。
请简单描述什么事二叉树的先序遍历、中序遍历和后序遍历,分别写出下面二叉树的先序遍历、中序遍历和后序遍历的结果。
先序遍历、中序遍历和后序遍历是二叉树的三种遍历方式。其中,先序遍历是指先访问根节点,再依次访问左子树和右子树;中序遍历是指先访问左子树,再访问根节点,最后访问右子树;后序遍历是指先访问左子树,再访问右子树,最后访问根节点。
下面是一个二叉树的例子:
```
1
/ \
2 3
/ \
4 5
```
该二叉树的先序遍历结果为:1 2 4 5 3
该二叉树的中序遍历结果为:4 2 5 1 3
该二叉树的后序遍历结果为:4 5 2 3 1
阅读全文