#713. 二叉树的深度

二叉树的深度

题目描述

给出每个节点的两个儿子节点,建立一棵二叉树(根节点为 11),如果是叶子节点,则输入 0 0。建好树后希望知道这棵二叉树的深度。
二叉树的深度是指从根节点到叶子结点时,最多经过了几层。
最多有 10510^5 个结点。

输入格式

参考题目。

输出格式

参考题目。

样例

样例输入 #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;
}