编写代码以{a,b,c,d,e,f,g,h,i}为元素构造一棵二叉树,并输出它的 (1)先序遍历; (2)中序遍历; (3)后序遍历; (4)层次遍历;非递归(队列) (5)该二叉树的高度; (6)该二叉树节点的个数
时间: 2023-03-15 17:57:31 浏览: 26
首先,我们需要定义二叉树的节点类型,一般来说,每个节点至少包含以下信息:
```python
class Node:
def __init__(self, data):
self.data = data
self.left = None
self.right = None
```
然后,我们可以用这些节点来构建二叉树,例如:
```python
# 构建二叉树
root = Node('a')
root.left = Node('b')
root.right = Node('c')
root.left.left = Node('d')
root.left.right = Node('e')
root.right.left = Node('f')
root.right.right = Node('g')
root.left.left.left = Node('h')
root.left.left.right = Node('i')
```
现在,我们已经构建好了二叉树,就可以开始遍历了。
(1) 先序遍历
先序遍历顺序是:根节点 -> 左子树 -> 右子树。
可以使用递归或者非递归(使用栈)的方式进行遍历。
递归代码如下:
```python
def preorder_traverse(node):
if node:
print(node.data)
preorder_traverse(node.left)
preorder_traverse(node.right)
# 调用
preorder_traverse(root)
```
非递归代码如下:
```python
def preorder_traverse(node):
stack = []
while node or stack:
while node:
print(node.data)
stack.append(node)
node = node.left
node = stack.pop()
node = node.right
# 调用
preorder_traverse(root)
```
(2) 中序遍历
中序遍历顺序是:左子树 -> 根节点 -> 右子树。
可以使用递归或者非递归(使用栈)的方式进行遍历。
递归代
阅读全文