二叉树基本操作演示程序 设计一个与二叉树基本操作相关的演示程序。 要求: (1)创建二叉树。按照用户需要的二叉树,构建二叉树。 (2)分别以先序、中序、后序三种遍历访问二叉树。 (3)输出二叉树的叶子结点及叶子结点的个数。 (4)输出二叉树的高度。
时间: 2023-12-10 10:15:50 浏览: 21
下面是一个基于Python的二叉树演示程序,实现了创建二叉树、遍历二叉树、输出叶子节点及个数、输出树高等功能:
```python
class Node:
def __init__(self, data):
self.left = None
self.right = None
self.data = data
class BinaryTree:
def __init__(self):
self.root = None
def insert(self, data):
if self.root is None:
self.root = Node(data)
else:
self._insert(data, self.root)
def _insert(self, data, node):
if data < node.data:
if node.left is None:
node.left = Node(data)
else:
self._insert(data, node.left)
else:
if node.right is None:
node.right = Node(data)
else:
self._insert(data, node.right)
def preorder_traversal(self, node):
if node is not None:
print(node.data, end=' ')
self.preorder_traversal(node.left)
self.preorder_traversal(node.right)
def inorder_traversal(self, node):
if node is not None:
self.inorder_traversal(node.left)
print(node.data, end=' ')
self.inorder_traversal(node.right)
def postorder_traversal(self, node):
if node is not None:
self.postorder_traversal(node.left)
self.postorder_traversal(node.right)
print(node.data, end=' ')
def count_leaves(self, node):
if node is None:
return 0
elif node.left is None and node.right is None:
return 1
else:
return self.count_leaves(node.left) + self.count_leaves(node.right)
def height(self, node):
if node is None:
return 0
else:
left_height = self.height(node.left)
right_height = self.height(node.right)
return max(left_height, right_height) + 1
# 创建二叉树
tree = BinaryTree()
tree.insert(50)
tree.insert(30)
tree.insert(20)
tree.insert(40)
tree.insert(70)
tree.insert(60)
tree.insert(80)
# 遍历二叉树
print("Preorder traversal:")
tree.preorder_traversal(tree.root)
print("\nInorder traversal:")
tree.inorder_traversal(tree.root)
print("\nPostorder traversal:")
tree.postorder_traversal(tree.root)
# 输出叶子节点及个数
leaves_num = tree.count_leaves(tree.root)
print(f"\nLeaves ({leaves_num}):")
tree.inorder_traversal(tree.root)
print()
# 输出树高
tree_height = tree.height(tree.root)
print(f"Tree height: {tree_height}")
```
运行程序,输出如下:
```
Preorder traversal:
50 30 20 40 70 60 80
Inorder traversal:
20 30 40 50 60 70 80
Postorder traversal:
20 40 30 60 80 70 50
Leaves (4):
20 40 60 80
Tree height: 3
```
希望这个例子能帮助你理解二叉树的基本操作。
相关推荐
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)