目录
1. 二叉线索树的节点结构体
typedef struct ClueBiTreeNode {//定义二叉线索树的节点结构体
char data;//数据域
ClueBiTreeNode* LeftChild;//左孩子
int LTag;
ClueBiTreeNode* RightChild;//右孩子
int RTag;
// LTag=0表示当前节点左指针域保存的是左孩子地址 1保存是当前节点的前驱节点线索
}*BiTreeClue;// BiTreeClue --》二叉线索树的结构体指针
2.按先序遍历的顺序创建二叉树
void CreateBiTree(BiTreeClue& T) {
char c;
cin >> c;//输入字符
if (c == '*') {
T = NULL;
}//孩子为空时,其值为‘*’
else {
T = new ClueBiTreeNode;//申请新节点,用来保存孩子节点
T->data = c;//为新节点填充数据
T->LTag = 0;//新节点初始化,存在左孩子
T->RTag = 0;//新节点初始化,存在右孩子
CreateBiTree(T->LeftChild);//递归处理左孩子
CreateBiTree(T->RightChild);//递归处理右孩子
}
}
3. 创建线索二叉树(使用先序/前序遍历线索化)
void CreateClueOrderBiTree(BiTreeClue& Phead, BiTreeClue& P) {
if (P == NULL) return;
if (P->LeftChild == NULL)
{
P->LeftChild = Ppre;
P->LTag = 1;
}
if (Ppre != NULL && Ppre->RightChild == NULL) {
Ppre->RightChild &#