二叉树和数据结构

小红的完全二叉树构造

题目描述

小红想构造一个总共 n 个节点完全二叉树,该二叉树满足以下两个性质:
1. 所有节点的权值值为 1 ~ n 的一个排列。
2. 除了根节点以外,每个节点的权值和它父亲的权值的乘积为偶数。

请你帮小红构造出这个二叉树,并按层序遍历的方式打印所有节点。

输入描述:一个正整数 n,代表二叉树的节点数量。2≤n≤10^5; 

输出描述:

输出一行n个正整数,代表小红构造的二叉树的层序遍历的序列。
输入 4
输出2 4 3 1
说明这棵树的结构如下

显然,任意节点和它父亲权值的乘积都是偶数。

#include<iostream>
#include<algorithm>
using namespace std;
void solve() {
	int n, i, j;
	cin>>n;
	for (i = 2; i <= n; i += 2) {
		cout<<i<<' ';
	}
	for (i = 1; i <= n; i += 2) {
		cout<<i<<' ';
	}
	cout<<endl;
}
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0), cout.tie(0);
	int T = 1;
	while (T--) {
		solve();
	}
	return 0;
}

平衡二叉树

题目描述

平衡二叉树,顾名思义就是一棵“平衡”的二叉树。在这道题中,“平衡”的定义为,对于树中任意一个节点,都满足左右子树的高度差不超过 d. 空树的高度定义为0,单个节点的高度为1,其他情况下树的高度定义为根节点左右子树高度最大值 + 1. 一棵在高度上平衡的树,节点数可能不平衡,因此再定义一棵树的不平衡度为这棵树中所有节点的左右子树的节点数之差的最大值。
给定平衡的定义参数d, 你需要求出所有高度为 n 的平衡树中不平衡度的最大值。

输入描述:两个整数,n, d.

输出描述:一个整数:所有高度为 n 的平衡树中不平衡度的最大值。

输入 4 1

输出  5

说明

下面这棵树在 d=1 的定义下高度是平衡的,其不平衡度为 5。

备注:0 ≤ n, d ≤ 60

#include <iostream>
using namespace std;
typedef long long ll;
class Tree
{
 public:
    ll left;
	ll right;
};
Tree tree[65];
int main()
{
	tree[1].right = 0;
	tree[1].left = 0;
	int n, d;
	while(cin >> n >> d){
		ll l = 1;
	for (int i = 1; i<n; ++i) {
		l = l * 2;
	}
	--l;
	for (int i = 2; i <= d+1; ++i) {
		tree[i].left = i - 1;
	}
	for (int i = 2; i + d<n+1; ++i) {
		tree[i + d].left = tree[i + d - 1].left + tree[i + d - 1].right + 1;
		tree[i + d].right = tree[i-1].left + tree[i-1].right+1;
	}
	cout<< l - tree[n - d].left <<endl;
    }
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/554173.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Docker容器逃逸-特权模式-危险挂载-Procfs

Docker容器逃逸-特权模式-危险挂载&#xff08;95天&#xff09; Docker这个概念&#xff1a; Docker 容器与虚拟机类似&#xff0c;但二者在原理上不同&#xff0c;容器是将操作系统层虚拟化&#xff0c;虚拟机则是虚拟化硬件&#xff0c;因此容器更具有便携性、高效地利用服务…

1.Chinese Tiny LLM_ Pretraining a Chinese-Centric Large Language Model

文章目录 摘要一、背景二、预训练数据统计信息数据处理 模型架构 三、SFT四、Learning from Human Preferences五、评估数据集和指标训练过程和比较分析安全性评估中文硬指令理解与遵循评价 六、结论 https://arxiv.org/abs/2404.04167https://github.com/Chinese-Tiny-LLM/Chi…

Jackson知识点记录

文章目录 一.Jackson模块说明 二.ObjectMapper基本功能使用ObjectMapper的一些核心方法&#xff1a;示例代码1. 序列化示例2. 反序列化示例3. JsonNode 处理示例 高级配置 三.各种Node1. ObjectNode2. ArrayNode3. ValueNode4. MissingNode示例 一.Jackson Jackson 库主要分为…

ruoyi-nbcio-plus基于vue3的flowable的websocket消息组件的升级修改(二)

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 http://122.227.135.243:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a…

winform 入门篇 -- 第15章 表格视图

表格控件 表格视图 DataGridView &#xff0c;即表格控件提行多行多列的表格状的数据展示 演示: 以表格控件来展示学生数据。。 每个单元格 都可以进行独立的编写 &#xff08;与上节得不同&#xff09; 基本操作: 1 添加一个表格控件 DataGridView 2 设置列数、列名 属…

makefile第七讲

更多精彩内容在公众号。 当make执行完后&#xff0c;我们期望将最终的可执行文件安装到系统目录下&#xff0c;这样在不同的目录下都可以执行编译的可执行文件&#xff0c;相当于做成了个命令。这个就需要用到make install。 源文件如下&#xff1a;用于判断系统是小端还是大端…

Canvas使用详细教学:从基础绘图到进阶动画再到实战(海报生成、Flappy Bird 小游戏等),掌握绘图与动画的秘诀

一、Canvas基础 1. Canvas简介 Canvas是HTML5引入的一种基于矢量图形的绘图技术&#xff0c;它是一个嵌入HTML文档中的矩形区域&#xff0c;允许开发者使用JavaScript直接操作其内容进行图形绘制。Canvas元素不包含任何内在的绘图能力&#xff0c;而是提供了一个空白的画布&a…

LeetCode450:删除二叉搜索树中的节点

题目描述 给定一个二叉搜索树的根节点 root 和一个值 key&#xff0c;删除二叉搜索树中的 key 对应的节点&#xff0c;并保证二叉搜索树的性质不变。返回二叉搜索树&#xff08;有可能被更新&#xff09;的根节点的引用。 一般来说&#xff0c;删除节点可分为两个步骤&#xf…

JS-39-underscore01-初识underscore

一、underscore简介 前面我们已经讲过了&#xff0c;JavaScript是函数式编程语言&#xff0c;支持高阶函数和闭包。 函数式编程非常强大&#xff0c;可以写出非常简洁的代码。例如Array的map()和filter()方法&#xff1a; use strict; var a1 [1, 4, 9, 16]; var a2 a1.ma…

代码随想录算法训练营Day1 : 704.二分查找、27.移除元素

二分查找&#xff1a; 题目&#xff1a;给定一个 n 个元素有序的&#xff08;升序&#xff09;整型数组 nums 和一个目标值 target &#xff0c;写一个函数搜索 nums 中的 target&#xff0c;如果目标值存在返回下标&#xff0c;否则返回 -1。 题目链接&#xff1a;704.二分…

免费泛域名SSL如何申请,和通配符有什么区别

-----让我们明确什么是泛域名。所谓泛域名&#xff0c;是指使用星号&#xff08;*&#xff09;作为子域名的占位符&#xff0c;它可以匹配任意子域名。-----而通配符在域名中&#xff0c;它可以出现在主域名的任何位置&#xff0c;它可以用于主域名和子域名的保护。 主要应用场…

抖音取图最新玩法!ai头像壁纸轻松玩转取图项目,取图小程序现成模板快速搭建上线运营。

取图这个项目其实非常有趣且易于上手&#xff0c;尤其适合初学者。今天&#xff0c;我将为你详细解析取图小程序的玩法及操作步骤。 一、原理简述 其核心理念在于&#xff0c;当用户欣赏完你在抖音上的作品后&#xff0c;若对其中的图片或表情包产生兴趣&#xff0c;你可以引…

部署wordpress

查看别名type ll ll 是 ls -l --colorauto 的别名 设置别名alias alias ymyum install -y 使用别名ym nginx 取消别名unalias ym 基于LNMP做一个wordpress nginx mysql 5.7 PHP 7.4 1、linux基本环境 修改主机名 hostnamectl set-hostname $name 关闭防火墙及selinux …

2024年【电工(初级)】新版试题及电工(初级)免费试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 电工&#xff08;初级&#xff09;新版试题根据新电工&#xff08;初级&#xff09;考试大纲要求&#xff0c;安全生产模拟考试一点通将电工&#xff08;初级&#xff09;模拟考试试题进行汇编&#xff0c;组成一套电…

C++11新特性之final关键字

final修饰函数 final修饰函数只能修饰虚函数&#xff0c;防止父类的函数被子类重写 final修饰类 final修饰类防止类被继承

达梦数据库导入导出工具dmfldr

达梦数据库导入导出工具dmfldr 基础信息 OS版本&#xff1a; Red Hat Enterprise Linux Server release 7.9 (Maipo) DB版本&#xff1a; DM Database Server 64 V8 DB Version: 0x7000c 03134284132-20240115-215128-200811 dmfldr工具介绍 dmfldr&#xff08;DM Fast Loade…

【漏洞复现】浙大恩特客户资源管理系统Ri0004_openFileByStream.jsp接口存在任意文件读取漏洞

漏洞描述 浙大恩特客户资源管理系统是一款针对企业客户资源管理的软件产品。该系统旨在帮助企业高效地管理和利用客户资源,提升销售和市场营销的效果。浙大恩特客户资源管理系统Ri0004_openFileByStream.jsp接口存在任意文件读取漏洞。该漏洞可能会对系统的完整性和安全性产生…

C语言-内存操作函数

C语言有一类内存函数&#xff0c;他们可以以字节为单位进行数据的拷贝、追加&#xff0c;甚至可以替代部分字符串函数。于是让我们来狠狠地学习它一百万遍吧~ 1.memcpy函数的使用和模拟实现 void * memcpy ( void * destination, const void * source, size_t num ); 1.1mem…

Java的数组定义和使用

目录 1.前言 2.数组的概念 3.在Java中的创建和初始化 3.1数组的创建 3.2数组的初始化 4.关于使用 4.1数组元素的访问 4.2数组的遍历 4.3length和length()的区别 5.数组其实是引用类型数据 5.1初始JVM的内存分布 5.2基本类型变量与引用类型变量的区别 5.3关于null的认识 5.4设计…

ssm057学生公寓管理中心系统的设计与实现+jsp

学生公寓管理中心系统设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本学生公寓管理中心系统就是在这样的大环境下诞生&#xff0c;其可以帮助管…