题目
思路
这道题可以用bfs遍历数,每向下遍历一层,层数level就增加1,以此类推,最后输出最后一层的深度即可!
拆代码
1. 准备工作:准备结构体,存储左右儿子和层数
#include <bits/stdc++.h>
using namespace std;
struct node{
int l,r; //左右儿子的下标
int level;//层次
};
node tree[1000010];
queue <node> q;
int ans=0;
2. 输入 :结构体输入,tree第一层层数初始化为1,队列push进去。
int main(){
int m;//节点数
cin>>m;
for(int i=1;i<=m;i++) cin>>tree[i].l>>tree[i].r;
tree[1].level=1; //手动初始化根节点层级
q.push(tree[1]);
3. 广搜bfs,具体看注释
while(!q.empty()){
node tmp=q.front();
if(tmp.l!=0){ //当还有左儿子
tree[tmp.l].level=tmp.level+1; //层数