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;
    }
};
相关推荐
_OP_CHEN13 小时前
【算法基础篇】(六十一)SG 函数通关指南:博弈论通用解法,从原理到实战秒杀各类 ICG 游戏
算法·蓝桥杯·c/c++·博弈论·acm/icpc·sg函数·有向图游戏
We་ct13 小时前
LeetCode 2. 两数相加:链表经典应用题详解
前端·算法·leetcode·链表·typescript
If using 10 days13 小时前
multiprocessing:创建并管理多个进程
python·算法
wu_asia13 小时前
每日一练壹
算法
程序员酥皮蛋13 小时前
hot 100 第二十二题 22.相交链表
数据结构·算法·leetcode·链表
一只小小的芙厨13 小时前
寒假集训·子集枚举2
c++·笔记·算法·动态规划
Y.O.U..13 小时前
力扣刷题-61.旋转链表
算法·leetcode·链表
这波不该贪内存的13 小时前
【无标题】
算法·排序算法
靠沿13 小时前
【优选算法】专题二——滑动窗口
java·数据结构·算法
SoulruiA13 小时前
LeetCode-394. 字符串解码 递归思路
算法·leetcode·职场和发展