建立一棵二叉树,求二叉数的树的深度、统计叶子结点的个数、统计总的结点个数、进行层序遍历、交换左右子树等代码实现
时间: 2023-07-10 20:15:11 浏览: 50
好的,以下是二叉树的相关代码实现:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
class BinaryTree:
def __init__(self, root=None):
self.root = root
def depth(self, root):
if not root:
return 0
left_depth = self.depth(root.left)
right_depth = self.depth(root.right)
return max(left_depth, right_depth) + 1
def count_leaf(self, root):
if not root:
return 0
if not root.left and not root.right:
return 1
return self.count_leaf(root.left) + self.count_leaf(root.right)
def count_node(self, root):
if not root:
return 0
return 1 + self.count_node(root.left) + self.count_node(root.right)
def level_order(self, root):
if not root:
return []
queue = [root]
res = []
while queue:
level = []
for _ in range(len(queue)):
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
def swap(self, root):
if not root:
return
root.left, root.right = root.right, root.left
self.swap(root.left)
self.swap(root.right)
```
其中,`depth()` 方法用于计算二叉树的深度,采用递归方式实现;`count_leaf()` 方法用于统计叶子节点的个数,同样采用递归方式实现;`count_node()` 方法用于统计总的节点个数,同样采用递归方式实现;`level_order()` 方法用于进行层序遍历,采用迭代方式实现;`swap()` 方法用于交换二叉树的左右子树,采用递归方式实现。
使用时,可以先构建二叉树,然后对其进行相关操作。例如:
```python
# 构建二叉树
root = TreeNode(1)
root.left = TreeNode(2)
root.right = TreeNode(3)
root.left.left = TreeNode(4)
root.left.right = TreeNode(5)
# 创建二叉树对象
bt = BinaryTree(root)
# 计算二叉树的深度
print(bt.depth(root))
# 统计叶子节点的个数
print(bt.count_leaf(root))
# 统计总的节点个数
print(bt.count_node(root))
# 进行层序遍历
print(bt.level_order(root))
# 交换左右子树
bt.swap(root)
print(bt.level_order(root))
```
输出结果为:
```
3
2
5
[[1], [2, 3], [4, 5]]
[[1], [3, 2], [5, 4]]
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![cpp](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)