当前位置:网站首页>完全二叉树问题
完全二叉树问题
2022-08-03 22:41:00 【chengqiuming】
一 原问题描述
BST - POJ 2309 - Virtual Judgehttps://vjudge.net/problem/POJ-2309
二 输入和输出
1 输入
第 1 行包含一个整数 N,表示查询的数量。在接下来的 N 行中,每行都包含一个数字,表示根号为 X 的子树。
2 输出
共 N 行,其中第 i 行包含第 i 个查询的答案。
三 输入和输出样例
1 输入样例
2
8
10
2 输出样例
1 15
9 11
四 分析
本问题规律可循,若 n 是奇数,那么必然是叶子节点,最大数和最小数都是它自己。否则求 n 所在的层次(倒数的层数,底层为 0),它的层数就是 n 的二进制表示中从低位开始第1个1所在的位置 i(最后一个非0位),例如 6 的二级制为110,从低位开始第1个1的位置是1,因此 6在第1层;12的二进制是1100,从低位开始第1个1的位置是2,因此12在第2层,如下图所示。

i 的值即为层数,可得到 n 的左右子树各有 k = 2^i-1个节点,那么最小数是 n-k,最大数是n+k,那么怎么求 2^i呢?
实际上,想得到最后一个非 0 位,只需先将原数取反后加1,此时除了最后一个非 0 位,其他位均与原数相反,直接与原数按位与运算即可得到最后一个非0位。
五 算法设计
1 求解logbit(n)=n&(-n)。
2 让 看= lowbit(n)-1,输出最小数 n-k,最大数 n+k。
六 代码
package poj2309;
import java.util.Scanner;
public class Poj2309 {
static int lowbit(int n) {
return n & (-n);
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int T, n, k;
T = scanner.nextInt();
while (T-- > 0) {
n = scanner.nextInt();
k = lowbit(n) - 1;
System.out.println((n - k) + " " + (n + k));
}
}
}七 测试
绿色为输入,白色为输出

边栏推荐
- 什么是memoization,它有什么用?
- Optimize the query (work in progress)
- Websocket multi-threaded sending message error TEXT_PARTIAL_WRITING--Use case of spin lock replacing synchronized exclusive lock
- 目标检测技术研究现状及发展趋势
- 2019年10月SQL注入的两倍
- Conditional Statements for Shell Programming
- How many way of calling a function?
- UVa 10003 - Cutting Sticks (White Book, Interval DP)
- Codeup brushing notes - simple simulation
- Data_web(八)mysql增量同步到mongodb
猜你喜欢

pikachu Over permission 越权

斩获双奖|易知微荣获“2021中国数字孪生解决方案优秀供应商”“中国智能制造优秀推荐产品”双奖项!

Cisco ike2 IPSec configuration
![navicat 连接 mongodb 报错[13][Unauthorized] command listDatabases requires authentication](/img/09/a579c60e07cdc145175e72673409f7.png)
navicat 连接 mongodb 报错[13][Unauthorized] command listDatabases requires authentication

First domestic open source framework 】 【 general cloud computing framework, any program can be made into cloud computing.

关于IDO预售系统开发技术讲解丨浅谈IDO预售合约系统开发原理分析

Data_web(九)mongodb增量同步到mongodb

Flutter 桌面探索 | 自定义可拖拽导航栏

Teach a Man How to Fish - How to Query the Properties of Any SAP UI5 Control by Yourself Documentation and Technical Implementation Details Demo

藏宝计划TreasureProject(TPC)系统模式开发技术原理
随机推荐
[N1CTF 2018]eating_cms
Bytebase数据库 Schema 变更管理工具
[b01lers2020]Life on Mars
封装、包、访问权限修饰符、static变量
举一个 web worker 的例子
Summary bug 】 【 Elipse garbled solution project code in Chinese!
直播预告 | 构建业务智联,快速拥抱财务数字化转型
为什么我们需要回调
什么是memoization,它有什么用?
483. Smallest Good Base
pikachu Over permission
代码随想录笔记_动态规划_416分割等和子集
Cisco ike2 IPSec configuration
466. Count The Repetitions
21天打卡挑战学习MySQL——《Window下安装MySql》第一周 第三篇
UVa 10003 - Cutting Sticks (White Book, Interval DP)
RPA助力商超订单自动化!
Golang Chapter 2: Program Structure
【开源框架】国内首个通用云计算框架,任意程序都可做成云计算。
CAS:153162-70-0_N-BOC-6-Biotinamidohexylamine