关于求二叉树最深节点的题,用DFS即可。
#include<bits/stdc++.h>
using namespace std;
struct node
{
int l,r; //记录左右节点
}a[1005000];
int n;
int maxone=-1; //最大深度
void dfs(int root,int step)
{
if(root==0) //节点为0 返回
{
return ;
}
maxone=max(maxone,step); //找最大的深度
dfs(a[root].l,step+1); //搜索左节点,有的话深度就加1
dfs(a[root].r,step+1); //搜索右节点,同上
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i].l>>a[i].r; //输入这个节点的左右节点
}
dfs(1,1); //从第一个节点开始,深度初始为1
cout<<maxone<<endl;
return 0;
}