【问题标题】:Prove that the successor Y of node X, when X doesn't have right child, is the lowest ancestor of X证明当 X 没有右孩子时,节点 X 的后继 Y 是 X 的最低祖先
【发布时间】:2016-04-20 13:33:13
【问题描述】:

我在大学学习计算机科学,但我有一个问题要证明。

证明BST上节点X的后继Y,当X没有右孩子时,是X的最低祖先,即左孩子也是@987654325的祖先@。

我需要考虑所有情况,包括叶子,除了最右边的,因为他没有继任者。

你们能给我一些从哪里开始的提示吗?

【问题讨论】:

  • 首先绘制树木的图片,然后按顺序遍历。您应该足够快地找到模式。
  • 我知道这是真的,但我不知道如何证明。

标签: data-structures binary-search-tree proof


【解决方案1】:

BST节点的中序遍历访问左子树,节点本身,然后是右子树。

所以,如果X(没有右孩子)是其父级的左孩子,那么我们知道它的继任者是父级。这源于中序遍历的定义。

如果X 是其父级的右子级,则父级在遍历中位于它之前(尽管它不是直接 前辈,除非X 没有左子树)。这也遵循中序遍历的定义。 X 的后继者,因为它没有右子树,所以在树中必须在它之上。后继者不能是父母,所以如果X不存在,它必须是父母的继任者。

【讨论】:

  • 好的,但在我看来,这并不能回答问题,如果回答了,它会让你递归思考......
  • 很多证明都是递归完成的。解释这怎么不能回答问题。
  • 首先,您需要对中序遍历有一个清晰的认识,但并非总是如此。此外,按顺序遍历并不能直观地说明继任者恕我直言。所以,是的,正如我在之前的评论中所说,它可能会回答这个问题,但它是一种递归解释。事实上,在阅读了几次之后,我得出的结论是,这实际上回答了这个问题(递归理解)。违反非矛盾原则让我最终可以原谅自己:D
  • 顺便说一句,我什至在评论之前就已经对您的答案表示赞同;)
猜你喜欢
  • 2014-02-26
  • 2018-04-18
  • 2021-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-24
  • 2011-12-29
  • 1970-01-01
相关资源
最近更新 更多