递归求解二叉树的高度,关键点是递归结束条件还有返回值。
main.c
#include<stdio.h>
typedef struct BINARYNODE
{
char root;
struct BINARYNODE* lchild;
struct BINARYNODE* rchild;
}BinaryNode;
int length = 0;
int GetTreeHeight(BinaryNode* node)
{
if (node == NULL)//结束条件已经给出
{
return 0;
}
int lheight = GetTreeHeight(node->lchild);
int rheight = GetTreeHeight(node->rchild);
int Height = lheight > rheight ? lheight+1 : rheight+1;
return Height;
}
int main()
{
//创建结点
BinaryNode node1 = { 'A',NULL,NULL };
BinaryNode node2 = { 'B',NULL,NULL };
BinaryNode node3 = { 'C',NULL,NULL };
BinaryNode node4 = { 'D',NULL,NULL };
BinaryNode node5 = { 'E',NULL,NULL };
BinaryNode node6 = { 'F',NULL,NULL };
BinaryNode node7 = { 'G',NULL,NULL };
BinaryNode node8 = { 'H',NULL,NULL };
//建立结点关系
node1.lchild = &node2;
node1.rchild = &node6;
node2.rchild = &node3;
node3.lchild = &node4;
node3.rchild = &node5;
node6.rchild = &node7;
node7.lchild = &node8;
//求二叉树高度
int height = GetTreeHeight(&node1);
printf("二叉树高度为:%d ", height);
system("pause");
return 0;
}
测试结果: