当前位置: 首页 > news >正文

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

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.mrgr.cn/news/41393.html

相关文章:

  • 高斯消元 笔记
  • 110.WEB渗透测试-信息收集-ARL(1)
  • L8910 【哈工大_操作系统】CPU管理的直观想法多进程图像用户级线程
  • go结构体默认值和校验器(go-defaults、go-validator)
  • 【C++】C++基础
  • Redis: Sentinel节点管理,故障迁移一致性以及TILT模式
  • VPN简述
  • 基于YOLOv8的智能植物监测机器人
  • SQL:函数以及约束
  • 现在别买理想L7/L8,问界M8要来暴揍友商了
  • 胶片效果风格调色PS插件滤镜 VSCO PRO 中文版
  • 【重学 MySQL】五十、添加数据
  • zabbix7.0web页面删除主机操作实现过程
  • 【Linux】第一个小程序——进度条实现
  • 1.Java--入门笔记
  • SpringBoot 配置⽂件
  • 颠覆声音转换!Seed-VC零样本模仿技术揭秘
  • Electron 使⽤ electron-builder 打包应用
  • Codeforces Round 976 (Div. 2)(A,B,C,D,E)并查集,区间合并,概率dp
  • SPARK调优:AQE特性(含脑图总结)