理论原理:
代码实现:
#include <iostream>
using namespace std;
struct Binary_Tree_Node
{
char data;
Binary_Tree_Node *lchild;
Binary_Tree_Node *rchild;
Binary_Tree_Node(char data,Binary_Tree_Node *lchild,Binary_Tree_Node *rchild);
};
Binary_Tree_Node::Binary_Tree_Node(char data,Binary_Tree_Node *lchild,Binary_Tree_Node *rchild)
{
this->data=data;
this->lchild=lchild;
this->rchild=rchild;
}
int binaryTreeHeight(Binary_Tree_Node *root)
{
if(root==NULL)
{
return 0;
}
//求左子树的高度
int lheight=binaryTreeHeight(root->lchild);
//求右子树的高度
int rheight=binaryTreeHeight(root->rchild);
//返回本结点的高度
return lheight>rheight?lheight+1:rheight+1;
}
int main()
{
//创建结点
Binary_Tree_Node nodeA('A',NULL,NULL);
Binary_Tree_Node nodeB('B',NULL,NULL);
Binary_Tree_Node nodeC('C',NULL,NULL);
Binary_Tree_Node nodeD('D',NULL,NULL);
Binary_Tree_Node nodeE('E',NULL,NULL);
Binary_Tree_Node nodeF('F',NULL,NULL);
Binary_Tree_Node nodeG('G',NULL,NULL);
Binary_Tree_Node nodeH('H',NULL,NULL);
//创建树
nodeA.lchild=&nodeB;
nodeA.rchild=&nodeF;
nodeB.rchild=&nodeC;
nodeC.lchild=&nodeD;
nodeC.rchild=&nodeE;
nodeF.rchild=&nodeG;
nodeG.lchild=&nodeH;
cout<<binaryTreeHeight(&nodeA)<<endl;
return 0;
}
运行结果: