说明:本文内容和图片分别来自课件内容和文都考研洪老师教学视频 !!!
递归建立中序线索二叉树
1.左子树线索化(返回修改后的pre);
2.当前结点p线索化
建前驱线索(当前结点左空,指向pre);
建后继线索(pre右空,pre指向当前结点);
重新修改前驱结点p指针为 pre;
3.右子树线索化(将新的pre输入)
void InThreading(BiThrTree &p, BiThrTree &pre) {
if (p) { // 对以p为根的非空二叉树进行中序线索化
InThreading(p->lchild, pre); // 左子树线索化
if (!p->lchild) // 空,建前驱线索
{ p->LTag = Thread; p->lchild = pre; }
if (!pre->rchild) // 空,建后继线索
{ pre->RTag = Thread; pre->rchild = p; }
pre = p; // 保持 pre 指向 p 的前驱
InThreading(p->rchild , pre); // 右子树线索化
} // if
} // InThreading
非递归中序线索化二叉树
非递归先序线索化二叉树
非递归遍历先序线索二叉树
非递归遍历中序线索二叉树