#713. 二叉树的深度
二叉树的深度
题目描述
给出每个节点的两个儿子节点,建立一棵二叉树(根节点为 ),如果是叶子节点,则输入 0 0。建好树后希望知道这棵二叉树的深度。
二叉树的深度是指从根节点到叶子结点时,最多经过了几层。
最多有 个结点。
输入格式
参考题目。
输出格式
参考题目。
样例
样例输入 #1
7
2 7
3 6
4 5
0 0
0 0
0 0
0 0
样例输出 #1
4
#include<bits/stdc++.h>
using namespace std;
int n, d[100005], ans;
vector<int> v[100005]; //开了100005行
void dfs(int x, int f){ //f是x的父结点
d[x] = d[f] + 1;
ans = max(ans, d[x]);
for(auto y : v[x]){ //遍历x的所有子结点
dfs(y, x);
}
}
int main(){
cin >> n;
for(int i=1; i<=n; i++){
int x, y;
cin >> x >> y;
if(x) v[i].push_back(x); //把x加到i后面
if(y) v[i].push_back(y); //把y加到i后面
}
dfs(1, 0);
cout << ans;
return 0;
}
相关
在以下作业中: