首页 > Branch of Faith
头像 szut092225205
发表于 2026-02-08 17:45:53
题目描述 小红有一棵包含 n个节点的完全二叉树[1],其中 1号节点为根,i号节点的左儿子编号是 2×i,右儿子编号是 2×i+1。 现在有 q次询问,每次查询一个 x,你需要回答与 x号节点深度[3]相同的节点有多少个(包含 x本身)。 【名词解释】 完全二叉树[1]: 满足以下全部条件的二 展开全文
头像 牛客532882412号
发表于 2026-02-14 23:33:59
二叉树每层的节点个数为:1,2,4,8,16,32... 二叉树每层最后一个节点编号:1,3,7,15,31,63... 输入节点数后,开一个map数组,分别记录每层的节点总数及最后一个节点编号,然后遍历map数组,直到找到查询的节点编号小于等于某一层最后一个节点时,输出这层的节点总数。 ```#i 展开全文
头像 092325103陈鹏
发表于 2026-02-15 01:21:11
要求我求出与某编号的深度相同的有几个,除了最后一行,其他都是满的。然后我们观察完全二叉树其实是有规律的,第n层的最后一个编号是(2的n次方 - 1),比如第二层最后一个是3,然后这题又给你最后的编号a了,只要当2的n次方 - 1大于它时(另外这题其实最后一行一定是不满的),然后就是a-2的(n次方- 展开全文
头像 牛客190214153号
发表于 2026-02-14 15:10:24
解题思路:通过分析题目得到x∈[2^(i-1),2^i),并发现每层的节点个数就是那一层的第一个数。(i是x所在层数) 此时x分为两种情况:一种是x不在最后一层,那么只要找到x的层数直接输出2^(i-1)就可以了。 另一种是x在最后一层,最后一层的个数是n-2^(i-1)+1。 解题代码:
头像 我是无敌暴龙王
发表于 2026-02-14 15:25:52
由完全二叉树的性质可知,树的总深度g(n),除了最后一层,第i层的节点个数为2的i-1次方,当层数为i时,深度j为i-1,即深度 j的节点个数为2的j次方。 要判断与x号节点深度相同的节点数量,只需要判断x的深度high。 若x不在最后一层,则与x号节点深度相同的节点数量为2的high 次方; 若x 展开全文
头像 钒溴
发表于 2026-02-08 03:40:41
题目大概意思就是1到n的节点依次排列成二叉树,根据题目画图,我是根据给的询问节点编号依次除二得到深度,最后特判一下可能没填满的情况 #include <bits/stdc++.h> using namespace std; int main(){     lon 展开全文
头像 S曙G光
发表于 2026-02-14 21:55:54
题目: 小红有一棵以 1 号节点为根的完全二叉树(节点 i 的左儿子为 2i、右儿子为 2i+1),给定 n 个节点和 q 次询问,每次查询一个节点 x,需要求出与 x 节点深度相同的节点总数(包含 x 自身)。 核心思路: 步骤 1:确定查询节点 m 的深度对应的区间 在完全二叉树中,深度为 d 展开全文

等你来战

查看全部