C语言写出中序线索二叉树的遍历代码
时间: 2023-06-08 21:07:56 浏览: 104
以下是 C 语言写出中序线索二叉树的遍历代码:
```
typedef struct ThreadNode {
char data;
int ltag, rtag;
struct ThreadNode *lchild, *rchild;
} ThreadNode, *ThreadTree;
void InThread(ThreadTree &p, ThreadTree &pre) {
if (p != NULL) {
InThread(p->lchild, pre);
if (p->lchild == NULL) {
p->lchild = pre;
p->ltag= 1;
}
if (pre != NULL && pre->rchild == NULL) {
pre->rchild = p;
pre->rtag = 1;
}
pre = p;
InThread(p->rchild, pre);
}
}
void CreateInThread(ThreadTree &T) {
ThreadTree pre = NULL;
if (T != NULL) {
InThread(T, pre);
pre->rchild = NULL;
pre->rtag = 1;
}
}
ThreadTree FirstNode(ThreadTree p) {
while (p->ltag == 0)
p = p->lchild;
return p;
}
ThreadTree NextNode(ThreadTree p) {
if (p->rtag == 0)
return FirstNode(p->rchild);
else
return p->rchild;
}
void InOrder(ThreadTree T) {
for (ThreadTree p = FirstNode(T); p != NULL; p = NextNode(p)) {
printf("%c", p->data);
}
}
```
请注意,这段代码中使用了链表结构实现了线索化二叉树,并使用中序遍历方式。如果您需要实现前序、后序遍历,可以在代码中做一些修改并使用类似的方法。
阅读全文