原题链接:数据结构-线索二叉树
解题思路:先用先序二叉树排序,存值。后用中序输出。
注意事项:要注意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、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复