C++ 二叉树 二叉树深度 洛谷P4913

这篇博客介绍了洛谷P4913关于二叉树深度的问题,首先解释了二叉树的概念,包括先序、中序和后序遍历,并展示了简单的C++代码实现。博主分享了AC的题解,欢迎讨论优化方案。

二叉树深度

洛谷P4913

Bonjour! 今天我们来看看这道二叉树的题

好的 首先 二叉树是啥?

在这里插入图片描述
(图片源自网络)
就是上面这个 二叉树二叉树 他每一个节点都可以再分出两个节点
在这里插入图片描述
(图片源自网络)

二叉树有先序遍历(pre-order)根节点-左节点-右节点
中序遍历(in-order)左节点-根节点-右节点
后序遍历(post-order)左节点-右节点-根节点

在这里插入图片描述
(图片源自网络)
上面是一个比较简单但是又比较讨巧的方法 所以我就也不多做解释了…

好的 可以看题了

在这里插入图片描述
嗯 简单明了的题干 我喜欢

不多说了 上代码

//
//  main.cpp
//  二叉树深度
//
//  Created by Helen on 2020/8/7.
//  Copyright © 2020 Helen. All rights reserved.
//

#include <iostream>
using namespace std;
int n;
int l[1000005],r[1000005];
int get_depth(int root); // dfs
int main ()
{
    cin >> n;
    for (int i=1;i<=n;i++)
        cin >> l[i] >> r[i]; // 输入左节点&右节点
    cout <<get_depth(1) << endl; // 传根节点 输出dfs结果
    return 0;
}
int get_depth(int root)
{
    if (l[root]==0 && r[root]==0) // 只要他没有子节点就返回1
        return 1;
    return max(get_depth(l[root]),get_depth(r[root]))+1; // 选左节点和右节点中更大的那个
}

好啦 希望你看懂了 Au revoir~
----------------------------------------✂︎---------------------------------------------
此题解已经AC 欢迎指出更多优化方法~

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值