LeetCode 606.根据二叉树创建字符串

LeetCode 606.根据二叉树创建字符串

思路🧐:

根据示例发现,当结点左右都为空时可以省略括号结点仅左为空时,不能省略括号,因为分不清到底是左为空还是右为空,所以我们在解题时需要判断结点的左右情况。

题目要求前序遍历 (根左右),我们可以用to_string将val转为字符 传并赋给str,。然后开始走左边,这里要判断一下,如果左和右有一个不为空 那么我们就需要加上括号 ,当走到空或者函数走完时就返回字符串回到上一次递归,开始遍历右边,右边只需要判断是否为空,不为空就进行递归。当遍历完该树后,str就是前序字符串。

代码🔎:

c++ 复制代码
class Solution {
public:
    string tree2str(TreeNode* root) {
        string str;
        if(root == nullptr) //为空就返回字符串
            return str;
        
        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;
    }
};
相关推荐
single59414 分钟前
【c++笔试强训】(第四十五篇)
java·开发语言·数据结构·c++·算法
呆头鹅AI工作室1 小时前
基于特征工程(pca分析)、小波去噪以及数据增强,同时采用基于注意力机制的BiLSTM、随机森林、ARIMA模型进行序列数据预测
人工智能·深度学习·神经网络·算法·随机森林·回归
一勺汤2 小时前
YOLO11改进-注意力-引入自调制特征聚合模块SMFA
人工智能·深度学习·算法·yolo·目标检测·计算机视觉·目标跟踪
每天写点bug2 小时前
【golang】map遍历注意事项
开发语言·算法·golang
程序员JerrySUN2 小时前
BitBake 执行流程深度解析:从理论到实践
linux·开发语言·嵌入式硬件·算法·架构
王老师青少年编程3 小时前
gesp(二级)(16)洛谷:B4037:[GESP202409 二级] 小杨的 N 字矩阵
数据结构·c++·算法·gesp·csp·信奥赛
robin_suli3 小时前
动态规划子序列问题系列一>等差序列划分II
算法·动态规划
cxylay4 小时前
自适应滤波算法分类及详细介绍
算法·分类·自适应滤波算法·自适应滤波·主动噪声控制·anc
茶猫_4 小时前
力扣面试题 - 40 迷路的机器人 C语言解法
c语言·数据结构·算法·leetcode·机器人·深度优先
轻浮j4 小时前
Sentinel底层原理以及使用算法
java·算法·sentinel