查找二叉树中最大距离节点的 Java 程序

17 Mar 2025 | 5 分钟阅读

在这个程序中,我们需要找出二叉树中距离最远的节点。根据我们的方法,树中所有节点之间的距离将保存在变量 distance 中。最大距离将使用变量 MaxDistance 进行保存。最初,MaxDistance 用 distance 的值初始化。如果发现任何值大于 MaxDistance,则覆盖 MaxDistance 的值。

重复此过程,直到我们找到树中两个节点之间可能的最大距离。该过程的算法如下。

Java program to find the nodes which are at the maximum distance in a Binary Tree

算法

  • 定义 Node 类,该类包含三个属性:data、left 和 right。这里,left 表示节点的左子节点,right 表示节点的右子节点。
  • 创建节点时,数据将传递到节点的 data 属性,left 和 right 都将设置为 null。
  • 定义另一个具有两个属性 root 和 treeArray 的类。
    • Root 表示树的根节点,并将其初始化为 null。
    • treeArray 将存储二叉树的数组表示。
  • nodesAtMaxDistance() 将找出距离最远的节点
  • 它将计算二叉树中所有节点之间的距离并将其存储在变量 distance 中。
  • MaxDistance 跟踪节点之间可能的最大距离。如果 maxDistance 小于 distance,则 distance 的值将存储在 maxDistance 中。清除数组以删除以前存储的值。距离最远的节点将存储在数组 arr 中。
  • 如果有多对节点处于最大距离,则将它们存储在数组 arr 中。

a. calculateSize() 将计算树中存在的节点数。

b. convertBTtoArray() 将通过遍历树并将元素添加到 treeArray 将二叉树转换为其数组表示。

c. getDistance() 将计算给定节点与根的距离。

d. LowestCommonAncestor() 将找出节点 n1 和 n2 的最低公共祖先。

  • 如果任何节点等于根节点,则返回根作为最低公共祖先。
  • 否则,在左子树和右子树中搜索节点 n1 和 n2。
  • 如果找到一个节点,使得 n1 是该节点的左子节点,n2 是该节点的右子节点,反之亦然。返回该节点作为最低公共祖先。

a. FindDistance() 将计算两个节点之间的距离。

  • 首先,它计算每个节点与根节点的距离。
  • 从这个根节点中减去 2 * 最低公共祖先的距离

程序

输出

Nodes which are at maximum distance: 
( 4, 9 )
( 5, 9 )
下一个主题Java 程序