📅  最后修改于: 2023-12-03 15:10:14.297000             🧑  作者: Mango
这道题主要是考察程序员关于二叉树的知识和应用能力。下面我们来分析一下这道问题。
给定一个二叉树,求该二叉树中距离最远的两个节点的距离。
这道题需要遍历二叉树,找到左右子树中深度最大的点,计算其距离。通过递归可以轻松地实现这个过程。
具体思路如下:
下面是使用 Python 语言实现的代码片段:
class TreeNode:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
def depth(node):
if node is None:
return 0
else:
return 1 + max(depth(node.left), depth(node.right))
def diameter(root):
if root is None:
return 0
left_depth = depth(root.left)
right_depth = depth(root.right)
left_diameter = diameter(root.left)
right_diameter = diameter(root.right)
return max(left_depth + right_depth, max(left_diameter, right_diameter))
这段代码中,我们定义了一个 TreeNode
类来表示二叉树的节点。depth
方法用来计算节点的深度,diameter
方法用来计算二叉树的直径,返回直径的长度。
可以使用如下数据结构进行测试:
root = TreeNode(1)
root.left = TreeNode(2)
root.right = TreeNode(3)
root.left.left = TreeNode(4)
root.left.right = TreeNode(5)
root.right.left = TreeNode(6)
root.right.right = TreeNode(7)
root.left.right.right = TreeNode(8)
root.right.right.right = TreeNode(9)
print('二叉树直径:', diameter(root))
输出结果为:
二叉树直径: 6
表示该二叉树中,节点 4 到节点 9 的距离最远,为 6。