ADT 树 - 是一个节点 ancestor/descendant 本身?

ADT Tree - is a node ancestor/descendant of itself?

我要开始说 Stack Overflow 上还有一个关于此的问题,但我找不到真正的答案,因为与该问题相关的所有答案都各不相同,这让我很困惑比我已经多了。我的问题是,谈论抽象数据类型 - 树(正常不是二叉树,在 Java 编程中,以防万一它有所不同)。

1) 是树的一个节点,它本身是 ancestor/descendant 吗?

假设我查找了祖先的定义,结果是这样的变体:

"a node reachable by repeated proceeding from child to parent"

"a node's ancestor is: itself, its parent, or an ancestor of its parent itself"

"只有在以下情况下,节点 U 才是节点 V 的祖先: U = V 或 U 是 V 的 parent"

的祖先

2) "ancestor" 是否有一个通用的定义,或者两个定义(包括节点本身或不)都是正确的?

3)如果节点本身不被认为是自己的祖先,那么节点深度的定义是否等于其祖先的数量?

您可以从定义非常明确的 XPath 推荐中使用的轴命名法中获得灵感:

给定树中的一个节点(即 上下文节点),规范定义轴,即相对于上下文节点的节点集:

  • child轴包含上下文节点children
  • 后代轴包含上下文节点的后代;后代是 child 或 child 的 child 等等;
  • parent轴包含上下文节点的parent,如果有一个
  • 祖先轴包含上下文节点的祖先;上下文节点的祖先由上下文节点的parent和parent的parent等组成;因此,祖先轴将始终包括根节点,除非上下文节点是根节点

由于有时对包括上下文节点在内的后代或祖先进行操作很有用,它额外定义了:

  • descendant-or-self轴包含上下文节点和上下文节点的后代

  • ancestor-or-self轴包含上下文节点和上下文节点的祖先;因此,祖先轴将始终包含根节点

此模型可以回答您的问题 1。其他模型可能有所不同。 Q2:无法回答。 Q3:只看depth是怎么定义的。