一些非完全二叉树可能深度很大,比如最极端的情况是一条链,这样的树的深度是n,则需要建立一个大小为2^n的数组,空间复杂度无法承受所以采用储存左右两个儿子的方法来储存这颗二叉树,而不是用2x,2x+1来代表两个儿子
const int N = 1000010;
struct E
{
int left;
int right;
}t[N];
int dfs(int x)
{
if (!x) return 0;
return max(dfs(t[x].left), dfs(t[x].right)) + 1;//深度加1
}
void solve()
{
int n;
cin >> n;
for (int i = 1; i <= n; i++)
{
cin >> t[i].left >> t[i].right;
}
cout<<dfs(1);
}