思路分析
可在线索二叉树T中插入结点p,作为T中某结点s的的左子结点或右子结点。下面以右子结点为例,讨论在中序线索二叉树T中插入结点p,作为T中结点s的右子结点的方法。
情况1
1.若s无右子树,则p直接作为s的右子结点
/*s原来右边的信息赋给p*/
(1)p的右指针为s的右指针
(2)p的右线索为s的右线索
(3)p的左线索为1
(4)p的左指针指向s(指向前驱s)
(5)修改s的右线索为0
(6)修改s的右指针指向p(指向右子结点p)
情况2
2.若s有右子树,则s的右子树变成p的右子树,p变为s的右结点
/*修改p*/
/*s原来右边的信息(右子树)赋给p*/
(1)p的右指针为s的右指针
(2)p的右线索为s的右线索
(3)p的左线索为1
(4)p的左指针指向s(指向前驱s)
/*修改s*/
(5)修改s的右线索为0
(6)修改s的右指针指向p(指向右子结点p)
/*修改p的后继结点q*/
(7)找到p的后继结点为p的右子树的首结点q
(8)q的左指针指向p(指向前驱p)
*查找首结点
线索二叉树-查找中根序列第一个和最后一个的结点-CSDN博客
//返回以结点t为根结点的中序线索二叉树的中根序列的第一个结点
template<class T>
ThreadNode<T>* ThreadInTree<T>::FIO(Th

最低0.47元/天 解锁文章
3137

被折叠的 条评论
为什么被折叠?



