java - 二 fork 树的最左节点和最右节点是什么?

标签 java data-structures binary-tree

我正在阅读this在一个地方写着

最右边的节点将是左子树中具有最大值的节点,我假设最左边的节点是右子树中的最大值。

但是,在 another article它向我展示了查找最左边节点的不同方法:

1) 如果给定节点没有右子节点:

转到给定节点的根,直到它是任何节点的左子节点。该节点将是树中的下一个更高节点。

2) 如果给定节点有右子节点:

a) 如果给定节点的右子节点没有左子节点

The right child will be the next higher node.

b) 如果给定节点的右子节点有左子节点

The leftmost leaf node will be the next higher node.

即第二种方法不会像第一种方法建议的那样返回最大值(value),请澄清..

最佳答案

根据您附加的链接判断,我假设您专门讨论二叉搜索树,它具有有关其节点构成的规则。

作为二叉树(以及扩展的子树)的一般规则:

  • 节点右侧的每个子节点都将大于该节点。
  • 节点左侧的每个子节点都小于该节点。

因此,任何给定子树的最右边的子节点将始终是最高值。此外,任何给定子树的最左边的子节点始终是最低值。

请记住,二叉树与二叉搜索树略有不同,这些规则不一定适用于二叉树。

让我们使用以下二叉搜索树作为示例:

        9
      /   \
     4     13
   /  \   /  \
  1   5  11  16

假设我们正在尝试寻找树中的最高节点值。 如果我们从节点 9(“根”)开始,我们将继续向下遍历该节点的每个右子节点,直到不再有右子节点(即从节点 9 开始,然后向下移动到节点 13,然后结束节点 16 )。因此,16 是树中的最高值。

与搜索树中的最低节点值类似,我们从树的根节点开始,继续向下遍历每个左子节点,直到不再存在左子节点。

来源:在大学的数据结构和算法类(class)中学到了这一点(IT 学生)

希望这对您有所帮助,并且请随时纠正我可能犯的任何错误(我是新来的)。

关于java - 二 fork 树的最左节点和最右节点是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33458794/

相关文章:

java - 如果解析后没有找到数据,如何显示消息

查找数组内间隔的算法

python从递归方法返回列表

满二叉树的高度

c - 以特定格式图表打印二叉搜索树。在 c

java - 如何访问从另一个类中的文本文件导入的 map ?

java - 在 jaspersoft studio 中处理多个数据源

java - 共同托管 Ruby on Rails 和另一个 Web 应用程序

arrays - 将数组存储在可搜索的关键 redis 列表中

algorithm - 什么是自然密集图的例子?