线索二叉树中关于线索的问题

fjmyhfvclm2025-02-02  5

热心网友的回答:


我觉得你主要是不清楚pre指向的是什么。

我的资料结构书是严蔚敏版的,书上是这么说的:pre始终指向刚刚访问过的结点,若指标root指向当前访问的结点,则pre指向它的前续。

说的有点抽象。其实主要就是要清楚何时改变pre的值,「pre始终指向刚刚访问过的结点」就是说访问完一个结点后,就改变pre的值。

具体的思路是这样:首先书上建立线索的**是一箇中序遍历过程,其访问顺序分三步:左子树->本身结点->右子树。

其中访问左子树就是指呼叫函式inthread(root->lchild)。任何一次访问结点的操作必然处在这三步中的第二步,因为第一步又可以分为三步。可见pre值的修改应该在第二步之后,且在第三步之前,即在inthread(root->rchild)之前。

正如**中一样。

另外要注意第一次呼叫inthread前要先给pre赋值。

1.此**中的root可能指向的是二叉树中的任意一结点,由于任意一结点可以看做一个子树的根节点,所以可以理解为root指向二叉树本身或其子树的根节点。

root->lchild=pre这个**是说让当前结点的左子树指向当前结点的前驱(pre),即建立一个前续索引。

2.此**主要是判断是否要给pre建立一个后续线索。那么建立后续线索的前提条件是要右结点为空,这就是if中的判断。

pre->rchild=root就是给pre建立一个后续索引。pre是root的前续,反过来root就是pre的后续。

3.前续和后续结点的指向通过pre与root互为前续后续的关係实现的。以首结点为例的话比较特殊,因为如果root指向首结点,那么这就是第一次呼叫,在呼叫前要预先给pre赋值。

我先说一说 每个 节点 那 五个格 的资料 的含义 中间哪一个 是 储存资料 从左向右 第一个 和 第五个 是指标,具体指向什么 取决于第二个 和 第四个的值 第二个 如果是零,实线表示,则 第一个指向的是 左孩子 第二个 如果是1,虚线表示,则 第一个 指向的是 在中序遍历次序下 该节点的前驱 即...

你的bai那个 从风格du上看应该是严蔚敏书里zhi的。需要注dao 意的是,那本书里的回 採用的是答 类c语言,并不能直接拿来就用,而是要根据需要和环境进行一定的修改。里面的 是借鉴了c 里的引用的概念,是想说在函式中的改变会作用到thrt变数自身,而不是作用到那个变数的一个副本上。如果用c语言,...

所谓平衡二叉树是指树中任一结点的左 右子树高度大致相同。平衡二叉树有很多种最着名的是由前苏联数学家adelse velskil和landis在1962年提出的,称为avl树。平衡二叉树 avl树 定义如下 平衡二叉树或者是一棵空树,或者是具有以下性质的二叉排序树 1 它的左子树和右子树的高度之差绝对...

转载请注明原文地址:http://www.hongxiuz.cn/baike/1458241.html