问题描述:假设二叉树采用二叉链存储结构进行存储,设计一个算法采用分治法求一棵二叉树的高度。
#include <stdio.h>
#include <stdlib.h>
#define max(x,y) ((x)>(y) ? (x):(y))
typedef struct BiTNode{
char data;
struct BiTNode *Lchild, *Rchild;
}BiTnode,*BiTree;
// create Binary Tree
BiTree CreateBiTree(BiTree T){
char ch;
scanf("%c", &ch);
if(ch == '#') T = NULL;
else{
if(!(T = (BiTree)malloc(sizeof(BiTnode)))) return false;
T->data = ch;
T->Lchild = CreateBiTree(T->Lchild);
T->Rchild = CreateBiTree(T->Rchild);
}
return T;
}
int TreeHigh(BiTree T){
if(T == NULL ) return 0;
else return( max(TreeHigh(T->Lchild),TreeHigh(T->Rchild)) + 1);
}
int main()
{
BiTree T1 = NULL,B1;
B1 = CreateBiTree(T1);
printf("success !\n");
int a = 0;
printf("树最大的高度是: %d", TreeHigh(B1));
return 0;
}