【无标题】

HJ141 小红的二叉树

  • 题目
  • 题解(28)
  • 讨论(17)
  • 排行

中等 通过率:31.35% 时间限制:1秒 空间限制:1024M

知识点数论

校招时部分企业笔试将禁止编程题跳出页面,为提前适应,练习时请使用在线自测,而非本地IDE。

描述

小红想知道,深度为 nn 的++满二叉树++ [1][1]有多少条长度为 22 的++简单路径++ [2][2]?由于答案可能很大,请将答案对 (109+7)(109+7) 取模后输出。

在本题中,两条简单路径所包含的点集不同时,被视为不同的。例如,路径 u−vu−v 与路径 v−uv−u 被视为相同的,因为它们均包含点 uu 与点 vv。

一棵深度为 hh 的++满二叉树++ [1][1]由恰好 2h−12h−1 个节点组成,每一个节点要么是叶子节点,要么有 22 个儿子,并且全部叶子节点的深度均为 hh。
++简单路径++[2][2]是指这样一条路径,其经过的顶点和边互不相同。

输入描述:

在一行上输入一个正整数 n(1≦n≦104)n(1≦n≦104) 代表满二叉树的深度。

输出描述:

输出一个整数,代表深度为 nn 的满二叉树中,长度为 22 的简单路径的数量。由于答案可能很大,请将答案对 (109+7)(109+7) 取模后输出。

示例1

输入:

复制代码
1

复制输出:

复制代码
0

复制说明:

复制代码
在这个样例中,深度为 11 的满二叉树只有 11 个节点,所以没有长度为 22 的简单路径。

示例2

输入:

复制代码
3

复制输出:

复制代码
7

复制说明:

复制代码
在这个样例中,所给出的满二叉树如下图所示:
cpp 复制代码
// 从深度为2开始,当前叶子节点为2个。每加一层,每个叶子节点会增加三条路径
#include<bits/stdc++.h>
using namespace std;
const int mod=1e9+7;
int n;
int main(){
    cin>>n;
    if(n==1) cout<<0;
    else if(n==2) cout<<1;
    else{
        long long yezi=2,ans=1;
        for(int i=3;i<=n;i++){
            ans=(ans+yezi*3)%mod;
            yezi=(yezi*2)%mod;
        }
        cout<<ans%mod;
    }
    return 0;
}
相关推荐
专注API从业者11 小时前
用 Open Claw + 淘宝商品接口,快速实现电商商品监控与智能选品(附完整代码)
大数据·前端·数据结构·数据库
♡すぎ♡11 小时前
ShaderLab:PBR+IBL(ShaderToy Translation)
算法·计算机图形学·着色器·pbr·ibl
艾莉丝努力练剑11 小时前
【Linux网络】Linux 网络编程:HTTP(五)HTTP收尾,从Cookie会话保持、抓包问题到 HTTPS 初识
linux·运维·服务器·网络·c++
Shadow(⊙o⊙)11 小时前
前缀和:和可被K整除的子数组(normal)
数据结构·c++·算法
世纪末的小黑11 小时前
【LeetCode自用】LeetCode自用记录贴,题目一:两数之和
数据结构·算法·leetcode
兰令水11 小时前
topcode【随机算法题】【2026.5.22打卡-java版本】
java·算法·leetcode
努力努力再努力wz11 小时前
【Redis入门系列】:Redis 内部编码机制与 String 深度解析:SDS 底层实现、三种编码与核心命令详解
c语言·开发语言·数据结构·数据库·c++·redis·缓存
Brilliantwxx11 小时前
【C++】 认识STL set与map(基础接口+题目OJ运用)
开发语言·数据结构·c++·笔记·算法
05候补工程师11 小时前
【线性代数】核心考点复习笔记:二次型配方法、施密特正交化步骤与特征值经典题型详解
经验分享·笔记·线性代数·考研·算法
Huangjin007_11 小时前
【C++ STL篇(十一)】深入浅出红黑树:从原理到实现,一篇搞定
开发语言·c++