ADT 树 - 是节点本身的祖先/后代吗?
Posted
技术标签:
【中文标题】ADT 树 - 是节点本身的祖先/后代吗?【英文标题】:ADT Tree - is a node ancestor/descendant of itself? 【发布时间】:2015-09-09 15:27:49 【问题描述】:我会开始说 Stack Overflow 上还有一个关于此的问题,但我找不到真正的答案,因为与该问题相关的所有答案都彼此不同,这真的让我很困惑我已经是。我的问题是这个,谈论抽象数据类型 - 树(正常不是二叉树,在 Java 编程中,以防万一它有所作为)。
1) 是树的节点本身的祖先/后代吗?
假设我查找了祖先的定义,结果是这样的变体:
“从子节点到父节点的重复处理可到达的节点”
"一个节点的祖先是:它自己,它的父节点,或者它的父节点本身的一个祖先"
"一个节点 U 是节点 V 的祖先,仅当: U = V 或 U 是 V 的父级的祖先”
2)“祖先”是否有一个通用定义或两个定义(包括节点本身或不包括节点本身)都是正确的?
3)如果节点本身不被认为是自己的祖先,那么节点深度的定义是否等于其祖先的数量?
【问题讨论】:
您似乎已经回答了您的第一个问题,所以我不确定您在寻找什么。只是更多的验证?您对 (1) 的回答有力地表明 (2) 基本上是正确的,尽管世界上可能会有人不同意(不管我们在说什么),所以它不太可能是完全普遍的(但是,要么方式,如果被分配任务或确保您在同一页面上,确认事物的定义通常是一个好主意)。 (3) 为真(加或减一)。总而言之,这似乎不是一个特别容易回答的问题。 是的,我正在寻找验证,因为我对此有点困惑,所以我正在努力扩展我的知识并了解我是否做得好,顺便说一句,感谢您的回答:)跨度> 【参考方案1】:您可以从定义非常明确的XPath 推荐中使用的轴命名法中获得灵感:
给定树中的一个节点(即上下文节点),规范定义了轴,即相对于上下文节点的一组节点:
子轴包含上下文节点的子节点 后代轴包含上下文节点的后代;后代是孩子或孩子的孩子等等; 父轴包含上下文节点的父节点,如果有的话 祖先轴包含上下文节点的祖先;上下文节点的祖先由上下文节点的父节点和父节点的父节点等组成;因此,祖先轴将始终包括根节点,除非上下文节点是根节点由于有时对包括上下文节点在内的后代或祖先进行操作很有用,因此它另外定义了:
descendant-or-self 轴包含上下文节点和上下文节点的后代
ancestor-or-self 轴包含上下文节点和上下文节点的祖先;因此,祖先轴将始终包含根节点
此模型可以回答您的问题 1。其他模型可能会有所不同。 Q2:无法回答。 Q3:仅仅取决于深度是如何定义的。
【讨论】:
一个很好解释的答案,谢谢,将整个问题视为与模型相关的问题肯定解决了我的困惑 :)以上是关于ADT 树 - 是节点本身的祖先/后代吗?的主要内容,如果未能解决你的问题,请参考以下文章