我会开始说Stack Upflow上有另外一个问题,但是我找不到真正的答案,因为与这个问题相关的所有答案都彼此不同,而且我真的很困惑我我已经是。我的问题是这个,谈论抽象数据类型 - 树(通常不是二叉树和Java编程,以防它有所不同)。
1)是树的一个节点,它本身的祖先/后代?
让我们说我一直在寻找祖先的定义,结果就是这样的变化:
“一个节点可以通过从子节点到父节点重复进行”
“节点的祖先是:本身,它的父节点,或其父节点的祖先”
“只有在以下情况下,节点U才是节点V的祖先: U = V或 你是V的父母的祖先“
2)是否存在“祖先”的通用定义,或两种定义(包括节点本身与否)是对的吗?
3)如果节点本身不被认为是它自己的祖先,那么节点深度的定义是否等于其祖先的数量?
答案 0 :(得分:2)
您可以从极其明确的XPath建议中使用的轴命名法中获取灵感:
给定树中的节点(即上下文节点),规范定义了轴,即相对于上下文节点的节点集:
由于对后代或祖先(包括上下文节点)进行操作有时很有用,因此它还定义了:
descendant-or-self axis 包含上下文节点和上下文节点的后代
祖先或自我轴包含上下文节点和上下文节点的祖先;因此,祖先轴将始终包含根节点
此模型可以回答您的问题1.其他模型可能有所不同。 Q2:无法回答。问题3:仅取决于如何定义深度。