二叉树进阶练习——根据二叉树创建字符串

server/2024/10/9 3:40:18/

1.题目解析

题目来源:606.根据二叉树创建字符串 

测试用例 

2.算法原理

根据上面的题目我们知道这里需要根据前序遍历来创建字符串,并且需要将每棵子树使用括号括起来,但是要根据实际情况省略括号,比如当右子树为空左子树为空就可以省略,而左子树为空右子树不为空不可以省略,还有左子树不为空右子树为空可以省略右子树的括号,两个子树都不为空都不可以省略括号,这里我们使用按位或就可以很好的判断是否省略左子树的括号,而右子树的括号只需要判断右子树是否为空,为空则省略反之不省略即可 

3.实战演示

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:string tree2str(TreeNode* root) {string str;if(root == nullptr){return str;}else{str += to_string(root->val);}//左不为空时右为空不能省略括号//左为空而右不为空不能省略括号if(root->left || root->right){str += '(';str += tree2str(root->left);str += ')';}//右不为空才保留括号if(root->right){str += '(';str += tree2str(root->right);str += ')';}return str;}
};

 


http://www.ppmy.cn/server/126541.html

相关文章

Redis 性能优化的高频面试题及答案

目录 高频面试题及答案1. 如何选择合适的数据结构以优化 Redis 性能?2. 如何配置 Redis 以优化内存使用?3. 如何使用管道(Pipeline)技术优化 Redis 性能?4. 如何通过数据持久化优化 Redis 性能?5. 如何使用 Redis 的集群模式优化性能?6. 如何通过合理的键命名策略优化 R…

高精度(3)——高精度乘法

题目描述 给定两个非负整数(不含前导 0)A 和 B,请你计算 A B的值。 输入格式 共两行,第一行包含整数 A ,第二行包含整数 B。 输出格式 共一行,包含A B的值。 数据范围 1≤A的长度≤100000, 0 ≤ B…

项目实战:构建高效可扩展的Flask Web框架:集成Flask-SQLAlchemy、Marshmallow与日志管理

前言 在Web开发中,构建一个既高效又可扩展的框架是项目成功的基石。Flask作为一个轻量级的Web应用框架,凭借其易用性和灵活性,特别适合快速开发和原型设计。结合Flask-SQLAlchemy(为Flask提供SQLAlchemy ORM支持的扩展&#xff0…

Android SystemUI组件(09)唤醒亮屏 锁屏处理流程

该系列文章总纲链接:专题分纲目录 Android SystemUI组件 本章关键点总结 & 说明: 说明:本章节持续迭代之前章节的思维导图,主要关注左侧上方锁屏分析部分 唤醒亮屏 即可。 Power按键的处理逻辑最终是由PhoneWindowManager来…

区块链可投会议CCF C--FC 2025 截止10.8 附录用率

Conference:Financial Cryptography and Data Security (FC) CCF level:CCF C Categories:network and information security Year:2025 Conference time:14–18 April 2025, Miyakojima, Japan 录用率&#xff1…

npm切换到淘宝镜像

1、输入以下命令后回车,npm切换至淘宝镜像 npm config set registry https://registry.npmmirror.com 2、输入以下命令后回车,检查是否切换成功 npm config get registry 若返回此信息,表示切换成功 3、切换后就可使用淘宝镜像加快npm包的…

GPT对话知识库——bootloader是什么?ymodel协议是什么?

目录 1,问: 1,答: Bootloader 的主要功能 Bootloader 的工作流程 Bootloader 的应用场景 典型 Bootloader 实现的例子 1. STM32 的 Bootloader 2. U-Boot (Universal Bootloader) 总结 2,问: 2&…

c语言基础作业

选择题 1.1、以下选项中,不能作为合法常量的是 __________ A)1.234e04 B)1.234e0.4C)1.234e4 D)1.234e0 1.2、以下定义变量并初始化错误的是_____________。 A) char c1 ‘H’ ; B) char c1 9…