洛谷P4913 二叉树深度

【洛谷P4913 深基16.例3】二叉树深度

文章目录

题目描述

有一个 n ( n ≤ 1 0 6 ) n(n \le 10^6) n(n≤106) 个结点的二叉树。给出每个结点的两个子结点编号(均不超过 n n n),建立一棵二叉树(根节点的编号为 1 1 1),如果是叶子结点,则输入 0 0

建好这棵二叉树之后,请求出它的深度。二叉树的深度是指从根节点到叶子结点时,最多经过了几层。

输入格式

第一行一个整数 n n n,表示结点数。

之后 n n n 行,第 i i i 行两个整数 l l l、 r r r,分别表示结点 i i i 的左右子结点编号。若 l = 0 l=0 l=0 则表示无左子结点, r = 0 r=0 r=0 同理。

输出格式

一个整数,表示最大结点深度。

样例 #1

样例输入 #1

复制代码
7
2 7
3 6
4 5
0 0
0 0
0 0
0 0

样例输出 #1

复制代码
4

正确代码

c++ 复制代码
#include <bits/stdc++.h>
#include <algorithm>
using namespace std;
int N;
const int MAXN = 1e6+5;
struct node {
    int l,r;
};

void dfs(int num, int deep);

node tree[MAXN];

int ans = 0;

int main() {
    cin >> N;
    for (int i=1; i<=N; i++) {
        cin >> tree[i].l >> tree[i].r;
    }
    dfs(1,1);
    cout << ans  << endl;
    return 0;
}

void dfs(int num, int deep) {
    if (num == 0) return ;
    ans = max(ans,deep);
    dfs(tree[num].l,deep+1);
    dfs(tree[num].r,deep+1);
}
相关推荐
悠仁さん1 分钟前
哈夫曼树的简单介绍
算法
bIo7lyA8v3 分钟前
算法与数据结构协同优化的设计思想的技术8
数据结构·算法
Lsk_Smion6 分钟前
力扣实训 _ [98].验证二叉搜索树 _ 将二叉树展开成链表
数据结构·算法·leetcode
8Qi88 分钟前
LeetCode 377:组合总和 Ⅳ(Combination Sum IV)—— 题解 ✅
算法·leetcode·动态规划·完全背包
凯瑟琳.奥古斯特9 分钟前
力扣1002题C++解法详解
开发语言·c++·算法·leetcode·职场和发展
CHHH_HHH21 分钟前
【C++】红黑树:比AVL树更实用的平衡二叉搜索树
开发语言·数据结构·c++·算法·stl
Lazionr26 分钟前
基础算法 | 模拟算法练习
c++·算法
_日拱一卒32 分钟前
LeetCode:17电话号码的字母组合
java·数据结构·算法·leetcode·职场和发展
醉颜凉34 分钟前
Scala自定义Monad实战:从理论到应用的完整指南
大数据·算法·scala
STY_fish_201239 分钟前
KMP-前缀函数
算法