原题链接:数据结构-线索二叉树
解题思路:先用先序二叉树排序,存值。后用中序输出。
注意事项:要注意ABC##DE#G##F### 注意最后是三个空格 你可以用纸去画下二叉树就知道了。#代表空格。其他的别人都有解释。
注意理解下 这里二叉树的申请相当于一个大的指针里面有许多个小指针。这些小指针就是二叉树的节点。
大节点就是BiTree *T;
本来BiTree T和BiTNode *T是一样的但是BiTree *T这里的*T相当于大指针。否则也创建不了二叉树。二叉树其实也是自己脑子里假想的。不说了。
#include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct BiTrees { char data; struct BiTrees *lchild,*rchild; } BiTNode,*BiTree; void CreateBiTree(BiTree *T) { char ch; scanf("%c",&ch); if(ch==' ')//不能拿空值输入的是空格不是空值 { *T=NULL; return; } else { *T=(BiTNode*)malloc(sizeof(BiTNode)); if(!*T)exit(0);//申请内存失败 (*T)->data=ch; CreateBiTree(&((*T)->lchild)); CreateBiTree(&((*T)->rchild)); } } void display(BiTNode *elem){ printf("%c ",elem->data); } void PreOrderTree(BiTree T){ if(T){ display(T); PreOrderTree(T->lchild); PreOrderTree(T->rchild); } return ; } void InOrderTree(BiTree T){ if(T){ InOrderTree(T->lchild); display(T); InOrderTree(T->rchild); } return ; } void LastOrderTree(BiTree T){ if(T){ LastOrderTree(T->lchild); LastOrderTree(T->rchild); display(T); } return ; } int main() { BiTree tree; CreateBiTree(&tree); // PreOrderTree(tree); printf("\n"); InOrderTree(tree); // printf("\n"); // LastOrderTree(tree); return 0; }
0.0分
4 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复