首页 > 其他分享 >洛谷题单指南-二叉树-P4913 【深基16.例3】二叉树深度

洛谷题单指南-二叉树-P4913 【深基16.例3】二叉树深度

时间:2024-03-14 09:56:24浏览次数:26  
标签:16 int 洛谷题 tree depth 二叉树 深度 root

原题链接:https://www.luogu.com.cn/problem/P4913

题意解读:计算二叉树的深度

解题思路:

首先介绍二叉树的存储方式,对于本题,直接用数组模拟,数组的下标即节点号

struct node
{
    int l, r;
} tree[N];

tree[i].l存的是节点i的左子结点,tree[i].r存的是节点i的右子节点。

计算深度至少有三种方法:递归、DFS、BFS,下面主要介绍前两种方法:

1、递归

从二叉树深度的定义出发,给定一个根节点,根节点以下的最大深度等于左子树的最大深度、右子树的最大深度中较大者,

树的深度再加1即可,用递归的定义就是:

  depth(root) = max(depth(root->left), depth(root->right)) + 1

100分代码:

#include <bits/stdc++.h>
using namespace std;

const int N = 1e6 + 5;

struct node
{
    int l, r;
} tree[N];

int n;

int depth(int root)
{
    if(root == 0) return 0;
    return max(depth(tree[root].l), depth(tree[root].r)) + 1;
}

int main()
{
    cin >> n;
    for(int i = 1; i <= n; i++)
    {
        cin >> tree[i].l >> tree[i].r;
    }
    cout << depth(1);

    return 0;
}

 2、DFS

从根节点出发,针对左、右子节点进行DFS,每DFS递归调用一次,深度都+1,记录这个过程中深度最大值即可。

100分代码:

#include <bits/stdc++.h>
using namespace std;

const int N = 1e6 + 5;

struct node
{
    int l, r;
} tree[N];

int ans, n;

void dfs(int root, int depth)
{
    if(root == 0) return;
    ans = max(ans, depth);
    dfs(tree[root].l, depth + 1);
    dfs(tree[root].r, depth + 1);
}

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

 

标签:16,int,洛谷题,tree,depth,二叉树,深度,root
From: https://www.cnblogs.com/jcwy/p/18072161

相关文章

  • 16_策略模式
    策略模式是一种行为型设计模式,它定义了一系列的算法,并将每个算法封装到独立的类中,使它们可以互相替换。策略模式使得算法可以独立于客户端而变化,客户端可以根据需要选择不同的算法。策略模式有三个主要角色:环境类(Context):它持有一个策略对象的引用,并在需要的时候调用策略对象的......
  • RedisCluster集群中的插槽为什么是16384个?
    RedisCluster集群中的插槽为什么是16384个?CRC16的算法原理。1.根据CRC16的标准选择初值CRCIn的值2.将数据的第一个字节与CRCIn高8位异或3.判断最高位,若该位为0左移一位,若为1左移一位再与多项式Hex码异或4.重复3至9位全部移位计算结束5.重复将所有输入数据操作完成以上步骤......
  • 【BFS二叉树】113路径总和II
    113路径总和II给你二叉树的根节点root和一个整数目标和targetSum,找出所有从根节点到叶子节点路径总和等于给定目标和的路径。思路:题目最终输出的是路径,因此用BFS遍历的时候,需要记录走到每个节点的路径;又因为路径和是要等于某个目标值的,因此也需要记录目标和。⇒......
  • 数据结构之树(Topk问题, 链式二叉树)
    一.topk问题取N个数中最大(小)的前k个值,N远大于k这道题可以用堆的方法来解决,首先取这N个数的前k个值,用它们建堆时间复杂度O(k)之后将剩余的N-k个数据依次与堆顶数据进行比较,如果比堆顶数据大,则将堆顶数据覆盖后向下调整时间复杂度(N-k)*log(N)总共的时间复杂度为O(......
  • 111. 二叉树的最小深度c
    /***Definitionforabinarytreenode.*structTreeNode{*intval;*structTreeNode*left;*structTreeNode*right;*};*/intmin(inti,intj){if(i>j)returnj;returni;}intminDepth(structTreeNode*root){......
  • 1688 API商品详情接口与ERP系统应用
     API接口与ERP系统集成的应用主要包括数据同步、业务流程自动化和信息共享三个方面。数据同步:通过API接口,ERP系统可以与其他系统之间进行数据的交换和同步。比如,将销售订单从电商平台自动导入到ERP系统中,然后将发货信息同步回电商平台,实现订单管理的自动化。又如,将供应商的......
  • 1688中国站获得联系方式 API 返回值
    公共参数名称类型必须描述keyString是免费申请调用key(必须以GET方式拼接在URL中)secretString是调用密钥api_nameString是API接口名称(包括在请求地址中)[item_search,item_get,item_search_shop等]cacheString否[yes,no]默认yes,将调用缓存的数据,速度比较快result_typeString否[j......
  • 2016-2017西安澳鹏用户(会员)营销顾问-案例
    2016年9月12日下午第一次去萧山机场,也是人生第一次坐飞机,我记得是晚上里11点多到西安咸阳机场,当时的末班机场大巴没有了,已经不记得当时是怎么去的酒店了。和澳鹏的缘分还要向前追溯,2015年11月份的时候他们的人事当时联系到了我,想挖我但是西安实在太远了,所以当时就婉拒了,2016年8月......
  • 洛谷题单指南-二叉树-P4715 【深基16.例1】淘汰赛
    原题链接:https://www.luogu.com.cn/problem/P4715题意解读:计算亚军得主,注意能力值最高的肯定是冠军,但能力值第二高的不一定是亚军,因为有可能中途就遭遇冠军。解题思路:根据题意,两两比赛,一轮后再按顺序两两比赛,形如一棵二叉树,但解题其实用不到二叉树的数据结构可以看出,最后参与......
  • 淘宝京东1688...按关键词搜索商品数据,商品详情数据(属性详情图,价格,sku等)批量采集,请求示
    在淘宝、京东、1688等电商平台上,按关键词搜索商品数据以及批量采集商品详情数据(如属性详情图、价格、SKU等)通常涉及到使用平台的API接口。以下是一个简化的请求示例说明,以帮助您理解这个过程。请求示例,API接口接入Anzexi581.了解API接口API接口是一种允许不同软件应用程序......