栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言递归实现线索二叉树

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言递归实现线索二叉树

本文实例为大家分享了C语言递归实现线索二叉树的具体代码,供大家参考,具体内容如下

描述:将二叉树中结点的空左孩子指针域指向前驱结点,将空的右孩子指针域指向后继结点。

code:

#pragma warning(disable:4996)
#include
#include
typedef struct TreeNode {
 char data;
 struct TreeNode *lchild, *rchild;
 int ltag, rtag;
}Tree,*BTree;
BTree Build_Tree(void) {
 BTree T;
 char ch;
 scanf("%c", &ch);
 if (ch == '#') {
 T = NULL;
 }
 else {
 T = (BTree)malloc(sizeof(Tree));
 T->data = ch;
 T->ltag = 0;
 T->rtag = 0;
 T->lchild = Build_Tree();
 T->rchild = Build_Tree();
 }
 return T;
}
//先序线索化
void Pre_Thread(BTree cur, BTree *pre) {
 if (cur && cur->ltag==0) {
 printf("%c ", cur->data);
 if (cur->lchild == NULL) {
  cur->lchild = *pre;
  (*pre)->ltag = 1;
  cur->ltag = 1;
 }
 if (cur->rchild == NULL) {
  cur->rtag = 1;
 }
 if (*pre && (*pre)->rtag == 1) {
  (*pre)->rchild = cur;
 }
 *pre = cur;
 Pre_Thread(cur->lchild, pre);
 Pre_Thread(cur->rchild, pre);
 }
}
//中序线索化
void In_Thread(BTree cur, BTree *pre) {
 if (cur) {
 In_Thread(cur->lchild, pre);
 printf("%c ", cur->data);
 if (cur->lchild==NULL) {
  cur->lchild = *pre;
  cur->ltag = 1;
 }
 if (cur->rtag == NULL) {
  cur->rtag = 1;
 }
 if (*pre && (*pre)->rtag == 1) {
  (*pre)->rchild = cur;
 }
 *pre = cur;
 In_Thread(cur->rchild, pre);
 }
}
//后序线索化
void Post_Thread(BTree cur, BTree *pre) {
 if (cur) {
 Post_Thread(cur->lchild, pre);
 Post_Thread(cur->rchild, pre);
 printf("%c ", cur->data);
 if (cur->lchild == NULL) {
  cur->lchild = *pre;
  cur->ltag = 1;
 }
 if (cur->rchild == NULL) {
  cur->rtag = 1;
 }
 if (*pre && (*pre)->rtag == 1) {
  (*pre)->rchild = cur;
 }
 *pre = cur;
 }
}
int main(void) {
 BTree T,p=NULL;
 T = Build_Tree();
 Pre_Thread(T, &p);
 //In_Thread(T, &p);
 //Post_Thread(T, &p);
 return 0;
}

跑时分别运行前序、中序、后序线索化。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/63171.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号