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;
    }
};
相关推荐
dragoooon3410 分钟前
[hot100 NO.13~18]
算法
WangLanguager11 分钟前
Prototypical Networks 在图像识别中表现如何?
算法
我是你们的明哥13 分钟前
A*(A-Star)算法详解:智能路径规划的核心技术
后端·算法
我是你们的明哥19 分钟前
从 N 个商品中找出总价最小的 K 个方案
后端·算法
民乐团扒谱机27 分钟前
【微实验】谱聚类之大规模数据应用——Nyström 方法
人工智能·算法·机器学习·matlab·数据挖掘·聚类·谱聚类
CoderYanger29 分钟前
A.每日一题——3606. 优惠券校验器
java·开发语言·数据结构·算法·leetcode
CoderYanger39 分钟前
D.二分查找-基础——744. 寻找比目标字母大的最小字母
java·开发语言·数据结构·算法·leetcode·职场和发展
元亓亓亓42 分钟前
LeetCode热题100--347. 前 K 个高频元素--中等
数据结构·算法·leetcode
Hello eveybody1 小时前
冒泡、选择、插入排序简介(C++)
数据结构·算法·排序算法
CoderYanger1 小时前
贪心算法:2.将数组和减半的最少操作次数
java·算法·leetcode·贪心算法·1024程序员节