解题思路:先用先序二叉树排序,存值。后用中序输出。
注意事项:要注意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;	
}


点赞(1)
 

0.0分

4 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 3 条评论

念心卓 2年前 回复TA
你这线索化都没有能叫线索二叉树?
Aurora 3年前 回复TA
你这线索化都没有能叫线索二叉树?
菜园啊 4年前 回复TA
你这线索化都没有能叫线索二叉树?