📄 demo07_1.cpp
字号:
// demo07_1
#include "btrechar.h"
void pppp(bitre &t,bitre &pre,bptrlink &ptrpre,bptrlink &ptrt)
{
if (t!=NULL){
bptr_point_to(ptrpre, pre); //用指示器指示前趋结点
getch();
bptr_point_to(ptrt, t); //用指示器指示当前结点
getch();
if ((pre!=NULL) && (pre->rtag==1)){ //判断当前结点的前趋后继
pre->rchild=t; //前趋结点后继线索化
rthread_point_to(pre,t); //画出新线索
getch();
}
if (t->lchild==NULL){ //判断当前结点前趋
t->lchild=pre;
t->ltag=1; //当前结点前趋线索化
dispint_atbnode_angle(1,t,150); //在结点旁显示标志
lthread_point_to(t,pre); //画出新线索
getch();
}else{
t->ltag=0; //设置当前结点前趋标志
dispint_atbnode_angle(0,t,150); //在结点旁显示标志
getch(); //等待按键以继续}
}
if (t->rchild==NULL) //判断当前结点后继
t->rtag=1; //设置右标志
else t->rtag=0;
dispint_atbnode_angle(t->rtag,t,0); //显示右标志值
pre=t; //让前趋指针pre指示到当前结点
if (t->ltag==0)
pppp(t->lchild,pre,ptrpre,ptrt);//左子树线索化
if (t->rtag==0)
pppp(t->rchild,pre,ptrpre,ptrt);//右子树线索化
}
}
void main()
{
bitre t,pre;
int k;
bptrlink ptrt,ptrpre;
load_bitre_file(t,"bitres\\letter.cbt");//读入二叉树
comput_bitre_card(t); //计算显示坐标
window(1,1,80,3);
// create_bptr(ptrt, "T");
// create_bptr(ptrpre, "pre"); //设置两个指示器的值
disp_bitre("Pre",t); //显示二叉树
pre=NULL;
pppp(t,pre,ptrpre,ptrt); //调用算法线索化
disp_thbitre("pre",t); //显示结果
Wait();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -