题目描述
给出每个节点的两个儿子节点,建立一棵二叉树(根节点为 11),如果是叶子节点,则输入0 0
。建好树后希望知道这棵二叉树的深度。二叉树的深度是指从根节点到叶子结点时,最多经过了几层。
最多有 10^6106 个结点。
输入格式
无
输出格式
无
输入输出样例
输入 #1
7
2 7
3 6
4 5
0 0
0 0
0 0
0 0
输出 #1
4
题目详解:
这是一道关于二叉树的入门题。这题主要考察二叉树的存储以及二叉树的遍历。那么我就来分这两部分来讲。可用DFS求解。
AC代码
#include<iostream>
#include<cstdlib>
using namespace std;
struct node{
int Lchild;
int Rchild;
}tree[1000001];
int Max=0;
void DFS(int index,int step){
if(index==0){
return ;
}
DFS(tree[index].Lchild,step+1);
DFS(tree[index].Rchild,step+1);
Max=max(Max,step);
}
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>tree[i].Lchild>>tree[i].Rchild;
}
DFS(1,1);
cout<<Max<<endl;
}