二叉树的深度
-
总时间限制:
- 1000ms 内存限制:
- 65535kB
-
描述
-
给定一棵二叉树,求该二叉树的深度
二叉树深度定义:从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的节点个数为树的深度
输入
-
第一行是一个整数n,表示二叉树的结点个数。二叉树结点编号从1到n,根结点为1,n <= 10
接下来有n行,依次对应二叉树的n个节点。
每行有两个整数,分别表示该节点的左儿子和右儿子的节点编号。如果第一个(第二个)数为-1则表示没有左(右)儿子
输出
- 输出一个整型数,表示树的深度 样例输入
-
3 2 3 -1 -1 -1 -1
样例输出
-
2
#include<iostream> #include<cmath> #include<cstring> #include<algorithm> #include<iomanip> #include<queue> #include<stack> #include<vector> #include<set> #include<map> using namespace std; int Left[15]={0}; int Right[15]={0}; int d=0; void dfs(int i,int dep) { d=max(d,dep); if(Left[i]!=-1) { dfs(Left[i],dep+1); } if(Right[i]!=-1) { dfs(Right[i],dep+1); } } int main() { int n,l,r; cin>>n; memset(Left,0xff,sizeof(Left)); memset(Right,0xff,sizeof(Right)); for(int i=1;i<=n;++i) { cin>>l>>r; if(l!=-1) { Left[i]=l; } if(r!=-1) { Right[i]=r; } } dfs(1,1); cout<<d<<endl; return 0; }