(c语言)中序加后序确立一颗二叉树(包含测试用例)

学数据结构不写代码的孩子,不是好孩子!
在创建树的过程中,并用先序把树遍历了一遍,因此只用了两个函数。我知道会有不少人问,如何找寻根节点,其实想啊,中序遍历加后序遍历,其中后序遍历最后遍历根节点,那么根据这一特性就可以取出根节点咯!
中序遍历输入:
cdebahgijf
后序遍历输入:
cedbhjigfa

//中序+后序遍历确立一棵树
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef char TElemType;
typedef struct BiTNode
{
	TElemType data;
	struct BiTNode *lchild,*rchild;
	
}BiTNode,*BiTree;
//建造树并遍历进行验证.
void   BinaryTreeFromOrderings(char *mid,char *last,int len)
{
	if(len==0)
	{
		return;
	}
	BiTree node = (BiTree)malloc(sizeof(BiTNode));
	node->data = last[len-1];
	int rootIndex = 0;
	for(;rootIndex<len;rootIndex++)
	{
		if(mid[rootIndex]==last[len-1])
			break;
	}
	printf("%c",node->data);
	BinaryTreeFromOrderings(mid,last,rootIndex);
	BinaryTreeFromOrderings(mid+rootIndex+1,last+rootIndex,len-(rootIndex+1));
	return ;
}
int main()
{
	char mid[100],last[100],len;
	//freopen("C:\\Users\\Administrator\\Desktop\\test.txt","r",stdin);
	printf("zhong xu bian li input:\n");
	scanf("%s",mid);
	printf("hou xu bian li input:\n");
	scanf("%s",last);
	len=(int)strlen(mid);
	BinaryTreeFromOrderings(mid,last,len);
	printf("\n");
}
发布了63 篇原创文章 · 获赞 2 · 访问量 1437

猜你喜欢

转载自blog.csdn.net/m0_37149062/article/details/105142410