题目描述
已知一棵二叉树用邻接表结构存储,求这棵树的高度。例:如图二叉树的数据文件的数据格式如下:
输入
第一行n为二叉树的结点个树,n≤100;以下第一列数据是各结点的值,第二列数据是左儿子结点编号,第三列数据是右儿子结点编号。
样例输入
7
5 2 3
12 4 5
10 0 0
29 0 0
15 6 7
8 0 0
23 0 0
样例输出
4
题目分析
首先,我们从题目给的输入开始分析。首先输入一个数字,如例中的“7”,表示这棵树总共的节点数。再每次输入三个数字,如例中的“5 2 3”,“12 4 5”等,三个数字中,第一个数,表示节点的数值,后面两个数,分别表示左子叶和右子叶的编号(注意:这里并不是数值,而是编号!)。
因此,由题中所给的数据,完整的代码如下
#include<bits/stdc++.h>
using namespace std;
struct Node{int data;int left,right;
}BTree[100];int getBTree(int root){if(root == 0){return 0;}int getL = getBTree(BTree[root].left );int getR = getBTree(BTree[root].right );return max(getL,getR)+1;
}int main(){int n,i;cin>>n;for(i=1;i<=n;i++){cin>>BTree[i].data >>BTree[i].left >>BTree[i].right ;}cout<<getBTree(1);
}