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

—-想了解C语言递归实现线索二叉树分享的全部内容且更多的C语言教程关注<计算机技术网>

C语言递归实现线索二叉树分享实例为大家分享了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;  }

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

以上就是C语言递归实现线索二叉树分享的全部内容,希望对大家的学习有所帮助,也希望大家多多支持<计算机技术网>。

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ctvol.com/c-cdevelopment/488612.html

(0)
上一篇 2020年11月12日
下一篇 2020年11月12日

精彩推荐