设计一个分治算法的程序,计算一棵二叉树的高度。
时间: 2024-10-08 20:01:30 浏览: 41
设计一个分治算法来计算二叉树的高度通常采用递归的方式。二叉树的高度定义为从根节点到最远叶子节点的最长路径上的边数。以下是基于这个概念的一个简单的Python示例:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def height(root):
# 如果根节点为空,则高度为0
if root is None:
return 0
# 分治策略:分别计算左子树和右子树的高度,取较大者加1作为当前节点的高度
left_height = height(root.left)
right_height = height(root.right)
# 返回根节点的最大子树高度加1
return max(left_height, right_height) + 1
# 测试
# 创建一个简单的二叉树
root = TreeNode(1)
root.left = TreeNode(2)
root.right = TreeNode(3)
root.left.left = TreeNode(4)
root.left.right = TreeNode(5)
# 计算并打印高度
print("The height of the binary tree is:", height(root))
```
在这个例子中,`height`函数采用了“分”(将问题分解成左右子树的高度)、“治”(递归求解左右子树的高度)、“合”(返回最大高度)的过程。当你运行这个程序时,它会递归地计算出输入二叉树的实际高度。
阅读全文