建立二叉树,并实现二叉树的遍历,先序遍历采用递归算法实现,层次遍历用非递归算法来实现
时间: 2024-03-09 21:48:36 浏览: 45
二叉树先序遍历的非递归算法具体实现
好的,我将根据您的要求进行回答。
首先,建立二叉树需要定义二叉树的节点类,包括节点的值和左右子节点指针。如下所示:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
```
然后,可以通过递归方式实现先序遍历。先序遍历的顺序为根节点、左子树、右子树。代码如下:
```python
def preorderTraversal(root):
if not root:
return []
res = []
res.append(root.val)
res += preorderTraversal(root.left)
res += preorderTraversal(root.right)
return res
```
最后,实现二叉树的层次遍历需要借助队列来实现,具体步骤如下:
1. 将根节点入队
2. 循环执行以下操作,直到队列为空
1. 弹出队首节点
2. 访问该节点
3. 将该节点的左子节点和右子节点入队(如果存在)
代码如下:
```python
def levelOrder(root):
if not root:
return []
res = []
queue = [root]
while queue:
size = len(queue)
level = []
for i in range(size):
node = queue.pop(0)
level.append(node.val)
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
res.append(level)
return res
```
这样,我们就实现了二叉树的建立、先序遍历和层次遍历。
阅读全文