543 二叉树的直径 python
时间: 2023-10-12 11:01:27 浏览: 96
二叉树的直径是指任意两个节点之间最长路径的长度。在 Python 中,可以通过递归的方式来计算二叉树的直径。以下是一个示例代码:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def diameterOfBinaryTree(root):
if not root:
return 0
# 递归计算左子树和右子树的最大深度
left_depth = maxDepth(root.left)
right_depth = maxDepth(root.right)
# 计算当前节点的直径
current_diameter = left_depth + right_depth
# 递归计算左子树和右子树的直径
left_diameter = diameterOfBinaryTree(root.left)
right_diameter = diameterOfBinaryTree(root.right)
# 取最大直径
return max(current_diameter, left_diameter, right_diameter)
def maxDepth(root):
if not root:
return 0
else:
left_depth = maxDepth(root.left)
right_depth = maxDepth(root.right)
return max(left_depth, right_depth) + 1
# 构建二叉树
root = TreeNode(1)
root.left = TreeNode(2)
root.right = TreeNode(3)
root.left.left = TreeNode(4)
root.left.right = TreeNode(5)
diameter = diameterOfBinaryTree(root)
print(f"The diameter of the binary tree is {diameter}")
```
上述代码中,首先定义了一个 `TreeNode` 类来表示二叉树的节点。然后,定义了 `diameterOfBinaryTree` 函数来计算二叉树的直径。
在 `diameterOfBinaryTree` 函数中,通过递归计算左子树和右子树的最大深度,并计算当前节点的直径。然后,再递归计算左子树和右子树的直径,并取最大值作为最终的直径。
另外,还定义了 `maxDepth` 函数来计算二叉树的最大深度。
运行以上代码,将会输出以下结果:
```
The diameter of the binary tree is 3
```
表示给定的二叉树的直径为 3。
阅读全文