设计递归算法分别对该二叉树做先序、中序、后序遍历,要求输出这三种遍历序列
时间: 2024-01-26 20:02:52 浏览: 56
假设二叉树的定义如下:
```python
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
```
先序遍历的递归算法:
```python
def preorderTraversal(root):
if not root:
return []
res = []
res.append(root.val)
res += preorderTraversal(root.left)
res += preorderTraversal(root.right)
return res
```
中序遍历的递归算法:
```python
def inorderTraversal(root):
if not root:
return []
res = []
res += inorderTraversal(root.left)
res.append(root.val)
res += inorderTraversal(root.right)
return res
```
后序遍历的递归算法:
```python
def postorderTraversal(root):
if not root:
return []
res = []
res += postorderTraversal(root.left)
res += postorderTraversal(root.right)
res.append(root.val)
return res
```
以上算法的时间复杂度均为 $O(n)$,其中 $n$ 是二叉树中节点的个数。
阅读全文