用递归的方法实现以下算法: 1.以二叉链表表示二叉树,建立一棵二叉树(算法5.3); 2.输出二叉树的中序遍历结果(算法5.1); 3.输出二叉树的前序遍历结果(见讲稿); 4.输出二叉树的后序遍历结果(见讲稿); 5.计算二叉树的深度(算法5.5); 6.统计二叉树的结点个数(算法5.6); 7.统计二叉树的叶结点个数; 8.统计二叉树的度为1的结点个数;
时间: 2023-03-21 15:03:05 浏览: 456
好的,以下是回答:
1. 以下是递归实现建立二叉树的算法:
```python
class Node:
def __init__(self, value=None, left=None, right=None):
self.value = value
self.left = left
self.right = right
def build_tree():
value = input("请输入节点的值:")
if not value:
return None
left = build_tree()
right = build_tree()
return Node(value, left, right)
```
2. 以下是递归实现输出二叉树中序遍历的算法:
```python
def inorder_traversal(root):
if not root:
return
inorder_traversal(root.left)
print(root.value, end=" ")
inorder_traversal(root.right)
```
3. 以下是递归实现输出二叉树前序遍历的算法:
```python
def preorder_traversal(root):
if not root:
return
print(root.value, end=" ")
preorder_traversal(root.left)
preorder_traversal(root.right)
```
4. 以下是递归实现输出二叉树后序遍历的算法:
```python
def postorder_traversal(root):
if not root:
return
postorder_traversal(root.left)
postorder_traversal(root.right)
print(root.value, end=" ")
```
5. 以下是递归实现计算二叉树深度的算法:
```python
def depth(root):
if not root:
return 0
left_depth = depth(root.left)
right_depth = depth(root.right)
return max(left_depth, right_depth) + 1
```
6. 以下是递归实现统计二叉树结点个数的算法:
```python
def node_count(root):
if not root:
return 0
left_count = node_count(root.left)
right_count = node_count(root.right)
return left_count + right_count + 1
```
7. 以下是递归实现统计二叉树叶结点个数的算法:
```python
def leaf_node_count(root):
if not root:
return 0
if not root.left and not root.right:
return 1
left_leaf_count = leaf_node_count(root.left)
right_leaf_count = leaf_node_count(root.right)
return left_leaf_count + right_leaf_count
```
8. 以下是递归实现统计二叉树度为1的结点个数的算法:
```python
def degree_one_node_count(root):
if not root:
return 0
if root.left and not root.right or not root.left and root.right:
return 1
left_degree_one_count = degree_one_node_count(root.left)
right_degree_one_count = degree_one_node_count(root.right)
return left_degree_one_count + right_degree_one_count
```
希望这些回答能够帮到你!
阅读全文