树中的节点是否被视为自己的祖先?

kos*_*tmo 9 algorithm clrs binary-search-tree

我想知道在计算机科学背景下对"祖先"定义的共识是什么.

我只是问,因为在算法导论,第二版,p.259有一个Tree-Successor(x)看似奇怪的算法的描述.在寻找节点x的后继者时,

[...]如果节点的右子树X是空的,X有一个继任Ÿ,然后ÿ是最低的始祖X,其左子也是祖先X.

在具有关键根二叉搜索树2和孩子13,的继任者1是其母公司2.在这种情况下,xx的后继者y的左子.根据这本书的定义,x必须是它自己的祖先,除非我遗漏了什么.

关于这一点,我没有在勘误表中找到任何内容.

Shr*_*saR 15

这只是一个定义问题,但在这种情况下,是的.CLRS将x的祖先定义为从根到x的唯一路径上的任何节点,根据定义,该节点包括x.

你引用的句子片段首先提到下一页的练习12.2-6,它指定了这个:

(回想一下,每个节点都是它自己的祖先.)

:-)

  • 这必须是网上最准确的答案:D (3认同)

Ste*_*n C 5

树中的节点是否被视为自己的祖先?

通常不是,AFAIK.例如,在二叉树的维基百科页面中,定义了祖先:

如果从节点p到节点q存在路径,其中节点p比q更接近根节点,则p是q的祖先,q是p的后代.

但显然,教科书对祖先的定义是这样一个节点就是它自己的祖先.这个定义并不完全直观,但教科书可以自由地为其使用的术语引入自己的定义.也许这个定义简化了一些相关的描述/定理/等.