C语言 数据结构 【树和二叉树】求树的高 给定一颗二叉树的先序序列,求该二叉树的高。

特别要注意换行符!!!!!!

Description

给定一颗二叉树的先序序列,求该二叉树的高。

Input

输入包括两部分
第一部分:一个正整数n,代表有n颗二叉树
第二部分:包括n行,每行代表一颗二叉树的先序遍历序列,空指针用字符^占位

Output

n行,每行一个整数,代表对应二叉树的高度

Sample Input
2
ABC^^^^
AB^^^

Sample Output
3
2

#include
#include
#define  TElemType char 
//二叉树的二叉链表的表示与实现
typedef struct BiTNode{
     
	TElemType data;
	struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;

//求二叉树的深度,深度由h返回 
void Deepth(BiTree T , int L, int *h)
{
     
    if(T)
    {
     	
        L++;
		if(L>*h) *h=L;
		Deepth(T->lchild,L,h);
		Deepth(T->rchild,L,h);
    } 	
}

//先序创建二叉树 ,假设树中结点为字符型,以^代表为空结点 
BiTree CreateBiTree()
{
     
	char ch;
	BiTree T;
	ch=getchar();
	if(ch=='^')
		T=NULL;
	else
	{
     
		T=(BiTNode*)malloc(sizeof(BiTNode));
		T->data=ch;
		T->lchild =CreateBiTree();
		T->rchild =CreateBiTree();
	}
	return T;
}
void shuchu()
{
     
	BiTree T;
	int L=0,h=0;
	//创建二叉树 
	T=CreateBiTree();
	//要输入换行符,因此要吸收掉 
	getchar();
	//找出树的深度 
	Deepth(T,L,&h);
	printf("%d\n",h);
}
int main()
{
     
	int n; 
	scanf("%d",&n);
	//吸收换行符 
	getchar();
	while(n--)
	{
     
		shuchu();
	}
	return 0;
}
	
	
	


你可能感兴趣的:(数据结构,二叉树,数据结构,算法)