题目描述
给出每个节点的两个儿子节点,建立一棵二叉树(根节点为 11),如果是叶子节点,则输入0 0。建好树后希望知道这棵二叉树的深度。二叉树的深度是指从根节点到叶子结点时,最多经过了几层。
最多有 10^610
6
个结点。
输入格式
无
输出格式
无
输入输出样例
输入 #1复制
7
2 7
3 6
4 5
0 0
0 0
0 0
0 0
输出 #1复制
4
#include <iostream>
using namespace std;
const int MAXN = 10e6 + 10;
int n, ans = 1;
struct node{
int left, right;
};
node tree[MAXN];
void dfs(int id, int deep){
if(id == 0)
return;
ans = max(deep, ans);
dfs(tree[id].left, deep + 1);
dfs(tree[id].right, deep + 1);
}
int main()
{
cin >> n;
for(int i = 1; i <= n; i++)
cin >> tree[i].left >> tree[i].right;
dfs(1, 1);
cout << ans;
system("pause");
return 0;
}