二叉树的先序遍历代码
时间: 2023-07-02 18:15:03 浏览: 88
先序遍历二叉树的递归算法-树与二叉树
二叉树的先序遍历可以使用递归或者栈来实现。以下是基于递归的先序遍历代码:
```python
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]:
res = []
if not root:
return res
res.append(root.val)
res += preorderTraversal(root.left)
res += preorderTraversal(root.right)
return res
```
在这个代码中,我们首先判断根节点是否为空,如果不为空,将根节点的值添加到结果列表中,并且递归遍历左子树和右子树。最终将左子树和右子树的遍历结果拼接到结果列表中并返回。
另外,如果使用栈来实现二叉树的先序遍历,其代码如下:
```python
def preorderTraversal(root: TreeNode) -> List[int]:
res = []
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
```
在这个代码中,我们使用一个栈来存储待遍历的节点。首先将根节点入栈,然后循环取出栈顶节点,并将其值添加到结果列表中。接着,按照右子树-左子树的顺序将节点入栈。循环直到栈为空,遍历结束。
阅读全文