纯净、安全、绿色的下载网站

首页|软件分类|下载排行|最新软件|IT学院

当前位置:首页IT学院IT技术

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

数星星的咚咚咚   2021-03-29 我要评论
想了解C语言递归实现线索二叉树的相关内容吗数星星的咚咚咚在本文为您仔细讲解C语言递归实现线索二叉树的相关知识和一些Code实例欢迎阅读和指正我们先划重点:c语言,递归,二叉树下面大家一起来学习吧。


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

code:

#pragma warning(disable:4996)
#include<stdio.h>
#include<stdlib.h>
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;
}

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


相关文章

猜您喜欢

  • Python 关键词提取 Python 结巴分词实现关键词抽取分析

    想了解Python 结巴分词实现关键词抽取分析的相关内容吗南宫伊枫在本文为您仔细讲解Python 关键词提取的相关知识和一些Code实例欢迎阅读和指正我们先划重点:Python,关键词提取,python,结巴分词,Python结巴分词,关键词提取下面大家一起来学习吧。..
  • 构建json字符串 深入剖析构建JSON字符串的三种方式(推荐)

    想了解深入剖析构建JSON字符串的三种方式(推荐)的相关内容吗crawl+在本文为您仔细讲解构建json字符串的相关知识和一些Code实例欢迎阅读和指正我们先划重点:构建json字符串下面大家一起来学习吧。..

网友评论

Copyright 2020 www.Shellfishsoft.com 【贝软下载站】 版权所有 软件发布

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 点此查看联系方式