【发布时间】:2021-11-24 06:43:22
【问题描述】:
我们得到一棵具有中序线程的二叉树。意思是,如果一个节点没有左孩子(右孩子),左线程(右线程)从那个节点链接到它的有序前驱(有序后继)。
你能帮我想出一个伪代码或算法来找到一个节点的父节点吗?例如(见下图),给定节点是 Q,父节点必须是 I。(我们是应该利用二进制是有序线程的给定想法)
TMI:我实际上需要这个伪代码/算法来创建另一个算法,该算法将获得二叉树的后继后继。
【问题讨论】:
-
为什么Q.left指向头节点?您的文字说它将指向 Q 的前身,但头节点 不是 Q 的前身。
-
图中的0和1是什么?你的节点有这些属性吗?
-
@trincot 因为最左边的节点没有有序的前任,最右边的节点没有有序的后继,所以两个节点都指向头节点。 INORDER 遍历:Q U I C K S O R T
-
@trincot 是的。最左边的属性称为 LTAG,最右边的属性称为 RTAG。基本上,如果它有一个左孩子(右孩子),则 LTAG (RTAG) 等于 1。否则为 0。
标签: algorithm tree binary-tree inorder postorder