构建二叉树

二叉树深度:

#include <iostream>
#include <vector>
#include <cmath>
#include <sstream>using namespace std;struct TreeNode {int val;TreeNode* left;TreeNode* right;TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};// 创建二叉树
TreeNode* createTree(const vector<string>& nodes, int index) {if (index >= nodes.size() || nodes[index] == "null") {return nullptr;}int val = stoi(nodes[index]);TreeNode* root = new TreeNode(val);root->left = createTree(nodes, 2 * index + 1);root->right = createTree(nodes, 2 * index + 2);return root;
}// 计算树的高度
int getHeight(TreeNode* root) {if (root == nullptr) {return 0;}int leftHeight = getHeight(root->left);int rightHeight = getHeight(root->right);return 1 + max(leftHeight, rightHeight);
}// 判断是否是平衡二叉树
bool isBalanced(TreeNode* root) {if (root == nullptr) {return true;}int leftHeight = getHeight(root->left);int rightHeight = getHeight(root->right);if (abs(leftHeight - rightHeight) <= 1 && isBalanced(root->left) && isBalanced(root->right)) {return true;}return false;
}int main() {freopen("in.txt","r",stdin);freopen("out.txt","w",stdout);string input;getline(cin, input);stringstream ss(input);vector<string> nodes;string node;while (ss >> node) {nodes.push_back(node);}TreeNode* root = createTree(nodes, 0);bool balanced = isBalanced(root);if (balanced) {cout << "True" << endl;}else {cout << "False" << endl;}return 0;
}

【问题描述】

        给定一个字符串,请将字符串里的字符按照出现的频率降序排列。例如,输入"tree",输出结果为"eert"。输入"Aabb",输出结果为"bbAa"。要求设计满足题目条件的如下函数:

class Solution {
public:string frequencySort(string s){  …  }
};

【输入形式】

      一个字符串。其中包括键盘上的所有可打印字符,比如空格、大小写字母、数字、标点符号等。

【输出形式】

      按字符出现频度由高到低的顺序排列的字符串。若字符出现的频度一样,则按ASCII码表中的顺序进行排列。

【样例输入】

tree

【样例输出】

        eert

【样例说明】

      b在原字符串中出现的频度最高,因此排列在最前面,字符r和t出现的频度一样,则按ASCII码表中的顺序进行排列。测试数据存放在in.txt文件中。

#include <iostream>
#include <string>
#include <unordered_map>
#include <algorithm>using namespace std;class Solution {
public:string frequencySort(string s) {unordered_map<char, int> freqMap;// 统计字符出现的频率for (char c : s) {freqMap[c]++;}// 按字符频率降序排序sort(s.begin(), s.end(), [&](char a, char b) {if (freqMap[a] != freqMap[b]) {return freqMap[a] > freqMap[b];} else {return a < b;}});return s;}
};int main() {string input;cin >> input;Solution solution;string output = solution.frequencySort(input);cout << output << endl;return 0;
}
#include <iostream>
#include <string>
#include <algorithm>
#include <vector>using namespace std;struct CharFrequency {char character;int frequency;
};class Solution {
public:static bool compare(const CharFrequency& a, const CharFrequency& b) {if (a.frequency != b.frequency) {return a.frequency > b.frequency;} else {return a.character < b.character;}}string frequencySort(string s) {vector<CharFrequency> freqList(128, {0, 0});// 统计字符出现的频率for (char c : s) {freqList[c].character = c;freqList[c].frequency++;}// 按字符频率降序排序sort(freqList.begin(), freqList.end(), compare);string result;for (const CharFrequency& cf : freqList) {result += string(cf.frequency, cf.character);}return result;}
};int main() {string input;cin >> input;Solution solution;string output = solution.frequencySort(input);cout << output << endl;return 0;
}
#include <iostream>
#include <string>
#include <algorithm>
#include <queue>
using namespace std;struct Node
{char ch;int n;Node(char ch) : ch(ch), n(0) {}Node() : ch(' '), n(0) {}
};bool compare(const Node& a, const Node& b)
{if (a.n != b.n)return a.n > b.n;return a.ch < b.ch;
}string frequencySort(string str)
{vector<Node> freqList(128, Node());// 统计字符出现的频率for (char ch : str){freqList[ch].ch = ch;freqList[ch].n++;}// 按字符频率降序排序sort(freqList.begin(), freqList.end(), compare);string result;for (const Node& node : freqList){result += string(node.n, node.ch);}return result;
}int main()
{string str;cin >> str;string output = frequencySort(str);cout << output << endl;return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OSPF的DR与BDR-新版(16)

目录 整体拓扑 操作步骤 1.基本配置 1.1 配置R1的IP 1.2 配置R2的IP 1.3 配置R3的IP 1.4 配置R4的IP 1.5 检测R1与R4连通性 1.6 检测R1与R2连通性 1.7 检测R1与R3连通性 2.搭建基本的OSPF网络 2.1 配置R1 OSPF 2.2 配置R2 OSPF 2.3 配置R3 OSPF 2.4 配置R4 OSPF…

Java解决爬楼梯问题

Java解决爬楼梯问题 01 题目 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 示例 1&#xff1a; 输入&#xff1a;n 2 输出&#xff1a;2 解释&#xff1a;有两种方法可以爬到楼顶。 1. 1 阶…

八皇后问题(C语言)

了解题意 在一个8x8的棋盘上放置8个皇后&#xff0c;使得任何两个皇后都不能处于同一行、同一列或同一斜线上。问有多少种方法可以放置这8个皇后&#xff1f; 解决这个问题的目标是找到所有符合要求的皇后摆放方式&#xff0c;通常使用回溯算法来求解。回溯算法会尝试所有可能…

数据结构之树 --- 二叉树 < 堆 >

目录 1. 树是什么&#xff1f; 1.1 树的表示 2. 二叉树 2.1 二叉树的概念 2.2 特殊的二叉树 2.3 二叉树的性质 2.4 二叉树的存储结构 2.4.1 顺序存储 2.4.2 链式存储 3. 二叉树顺序结构的实现 <堆> 3.1 二叉树的顺序结构 ​编辑 3.2 堆的概念及结构 ​编辑…

Appium+python自动化(八)- 初识琵琶女Appium(千呼万唤始出来,犹抱琵琶半遮面)- 下(超详解)

简介 通过上一篇宏哥给各位小伙伴们的引荐&#xff0c;大家移动对这位美女有了深刻的认识&#xff0c;而且她那高超的技艺和婀娜的身姿久久地浮现在你的脑海里&#xff0c;是不是这样呢&#xff1f;&#xff1f;&#xff1f;不要害羞直接告诉宏哥&#xff1a;是&#xff0c;就对…

D. X-Sum 求矩形里面斜线的和的最大值

题目 &#xff1a; https://codeforces.com/contest/1676/problem/D 思想&#xff1a;暴力&#xff0c;但是要注意很多细节&#xff0c;每次把当前点要走的下一步作为起点开始斜线遍历&#xff0c;这样可以有效避免越界问题&#xff0c;并且最后只用加上当前数。 代码&#…

C单片机数据类型与格式化

C语言数据类型 关键字位数表示范围stdint关键字ST关键字举例unsigned char80 ~ 255uint8_tu8u8 data 128char8-128 ~ 127int8_ts8s8 temperature 25unsigned short160 ~ 65535uint16_tu16u16 counter 5000short16-32768 ~ 32767int16_ts16s16 position 32767unsigned int3…

基于YOLOv5+Deepsort 的PCB缺陷检测及计数系统

背景&#xff1a; PCB&#xff08;Printed Circuit Board&#xff0c;印刷电路板&#xff09;是电子产品中至关重要的组成部分&#xff0c;它承载着电子元器件并提供电气连接。在PCB制造过程中&#xff0c;由于工艺、材料或设备等因素的影响&#xff0c;可能会引入各种缺陷&am…

node使用nodemonjs自动启动项目

安装 npm install -g nodemon使用方法 我这里用的是electron项目为例package.json配置 {"name": "my-electron-app","version": "1.0.0","description": "Hello World!","main": "main.js"…

电表通讯协议DLT645-2007编程

1、协议 电表有个电力行业推荐标准《DLT645-2007多功能电能表通信协议》&#xff0c;电表都支持&#xff0c;通过该协议读取数据&#xff0c;不同的电表不需要考虑编码格式、数据地址、高低位转换等复杂情况&#xff0c;统一采集。 不方便的地方在于这个协议定义得有点小复杂…

Strateg策略模式(组件协作)

策略模式&#xff08;组件协作&#xff09; 链接&#xff1a;策略模式实例代码 注解 目的 正常情况下&#xff0c;一个类/对象中会包含其所有可能会使用的内外方法&#xff0c;但是一般情况下&#xff0c;这些常使用的类都是由不同的父类继承、组合得来的&#xff0c;来实现…

跨境电商迎来综合竞争力比拼时代 五大趋势解读跨境2024

过去几年&#xff0c;跨境电商成为外贸出口增长的一大亮点&#xff0c;随着年底国务院办公厅《关于加快内外贸一体化发展的若干措施》的发布&#xff0c;跨境电商在促进经济发展、助力内外贸一体化发展方面的价值更加凸显。 这是跨境电商变化最快的时代&#xff0c;也是跨境电…

Getway介绍和使用

Getway 入门简介 网关搭建步骤&#xff1a; 创建项目&#xff0c;引入nacos服务发现和gateway依赖 配置application.yml&#xff0c;包括服务基本信息、nacos地址、路由 路由配置包括&#xff1a; 路由id&#xff1a;路由的唯一标示 路由目标&#xff08;uri&#xff09;…

常用环境部署(十二)——Redis搭建主从模式(一主一从)

一、主从服务器Redis安装 1、注意事项 主从服务器Redis尽量安装同一版本&#xff0c;避免兼容性造成的一些错误产生 2、Centos安装Redis 链接&#xff1a;​​​​​​常用环境部署(十)——MySQL主从同步数据搭建(一主一从)-CSDN博客 二、 主Redis配置 1、修改主Redis配置…

听说上海移动年终奖16个月!我承认我酸了!

* 你好&#xff0c;我是前端队长&#xff0c;在职场&#xff0c;玩副业&#xff0c;文末有福利! 今天&#xff0c;队长看到一篇帖子&#xff0c;有网友发帖说上海移动的年终奖发了16个月&#xff0c;我承认我酸了。 看到这里&#xff0c;我承认我也酸了。16个月是什么概念&…

一篇文章学会 NestJS 的拦截器并且附带实战操作案例

前言 在现代Web开发的世界中&#xff0c;NestJS以其灵活性和强大的功能立足&#xff0c;成为Node.js框架的佼佼者。其中一个引人注目的功能就是拦截器&#xff0c;这是一种可以让开发者更好地控制和补充HTTP请求循环的工具。拦截器让开发者可以在处理程序之前或之后“拦截”HT…

c++/c对应内存分区

栈区 1. 用于存放,局部变量,函数的参数。 2. 内部存放的变量生命周期: 从定义开始到函数结束。所以局部变量和参数只能在函数自己本身使用。 3. 作用域: 只能在定义的函数中使用。 堆区 1. 堆区内存,是用来动态分配内存的,程序员可以根据情况自己申请内存。 2. 生命周…

基于vue2+elementUI年份范围选择器

基于vue2elementUI实现年份范围选择器&#xff0c;支持时间跨度设置。代码如下&#xff1a; <template><el-popoverref"popover"placement"bottom"v-model"showPanel"popper-class"custom_year_range"trigger"manual&q…

【C/C++笔试练习】sort排序、STL容器、vector的特性、一级容器、迭代器失效、异常捕获、动态转换、统计每个月兔子的总数、字符串通配符

文章目录 C/C笔试练习选择部分&#xff08;1&#xff09;sort是不稳定排序&#xff08;2&#xff09;存放即有序的STL容器&#xff08;3&#xff09;连续储存的STL容器&#xff08;4&#xff09;vector的特性&#xff08;5&#xff09;一级容器&#xff08;6&#xff09;unorde…

PLC-IoT 网关开发札记(1):存档和分发 Android App

开篇记 PLC-IoT 网关是作者开发的产品&#xff0c;根据客户需求&#xff0c;立项开发手机 App&#xff0c;为用户提供一种方便、直观、友好的设备操控方式。网关运行的是嵌入式 Linux 操作系统&#xff0c;计划通过某一种通信协议&#xff08;例如 HTTP&#xff0c;MQTT或者 T…