二叉树求根结点到叶子结点的最长距离
时间: 2023-12-02 18:05:22 浏览: 109
二叉树求根节点到叶子节点的最长距离同样可以通过递归来实现。
具体实现步骤如下:
1. 如果根节点为空,则返回0
2. 如果左子树为空并且右子树不为空,则返回右子树的最长距离+1
3. 如果左子树不为空并且右子树为空,则返回左子树的最长距离+1
4. 如果左子树和右子树都不为空,则返回左右子树中最大的最长距离+1
5. 最终结果为左右子树中最大的最长距离
下面是一个示例代码:
```python
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
def maxDepth(root: TreeNode) -> int:
if not root:
return 0
if not root.left and root.right:
return maxDepth(root.right) + 1
if root.left and not root.right:
return maxDepth(root.left) + 1
return max(maxDepth(root.left), maxDepth(root.right)) + 1
def maxDistance(root: TreeNode) -> int:
if not root:
return 0
left_depth = maxDepth(root.left)
right_depth = maxDepth(root.right)
left_distance = maxDistance(root.left)
right_distance = maxDistance(root.right)
return max(left_depth + right_depth, max(left_distance, right_distance))
```
其中,TreeNode是二叉树的节点类,maxDepth函数用于计算二叉树的最长距离,maxDistance函数用于计算二叉树的最长距离。
阅读全文