//给二叉树加中序线索
//要得到中序线索二叉树,则只要对二叉树进行一次中序遍历,在遍历的过程中使用线索地带空的指针就可以
//实现思路 :先实现中序遍历,然后再添加 添加线索的代码
void inthread()
{
int s[n0+1] ; //栈
int t;//栈指针
int p = root; //当前节点的指针,被初始化为root
int q = 0;
while(p || t)
{//当前节点不为空 或者 栈不为空
if(p)
{//如果当前节点不为空,把当前节点入栈,节点指到当前节点的左孩子
s[++t] = p;
p = tree[p].llink;
}
else
{//如果当前节点为空
p = s[t--]; //p为当前节点的父亲节点
//cout<<tree[p].data ;//如果是中序遍历,就输出了
//现在是加上线索
if(q)
{//q现在是p的前驱
if(tree[q].rlink == 0)
{//如果前驱的右节点为0,那么线索话
tree[q].rlink = -p; //后续
}
if(tree[p].llink == 0)
{//如果当前节点的左节点为0.那么线索话
tree[p].llink = -q;
}
}
q = p; //q也是当前节点的父亲节点
p = tree[p].rlink ; //p是当前节点的父亲节点的右孩子
}
}
}