// 后序 中序遍历时访问节点的顺序决定前驱后继
// 增加两个指针域 forward backward 分别指向前驱与后继
// 或 增加两个指示点(Tag)0表示指向下一个树,1表示前驱
// 在一次遍历中完成前驱后继的寻找
#include <stdio.h>
#include <stdbool.h>
typedef int TElemType;
typedef enum PointerTag {
Link,Thread}; // Link=0:指针, Thread=1:线索
typedef struct BiThrNode{
TElemType data;
struct BiThrNode *lchild,*rchild;
PointerTag LTag,RTag; //左右标志
}BiThrNode,*BiThrTree;
// 方便起见 设定一个头结点 类似于链表
// 其rchild域指向中序遍历时访问的最后一个节点
// 反之,二叉树中序遍历的第一个节点的lchild域指针和最后一个节点的rchild指向头结点
// 类似建立一个双向线索链表
typedef bool Status;
Status InOrderTraverse_Thr(BiThrTree T,Status(*<
(C语言)线索二叉树的遍历与线索化(ThreadTree)
最新推荐文章于 2022-08-03 17:09:11 发布