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

被折叠的 条评论
为什么被折叠?



