首页 > 编程语言 >根据二叉树创建字符串 C++

根据二叉树创建字符串 C++

时间:2024-08-27 22:25:47浏览次数:8  
标签:示例 C++ 括号 二叉树 str 字符串 root

给你二叉树的根节点 root ,请你采用前序遍历的方式,将二叉树转化为一个由括号和整数组成的字符串,返回构造出的字符串。

空节点使用一对空括号对 "()" 表示,转化后需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。

示例 1:

输入:root = [1,2,3,4]
输出:"1(2(4))(3)"
解释:初步转化后得到 "1(2(4)())(3()())" ,但省略所有不必要的空括号对后,字符串应该是"1(2(4))(3)" 。

示例 2:

输入:root = [1,2,3,null,4]
输出:"1(2()(4))(3)"
解释:和第一个示例类似,但是无法省略第一个空括号对,否则会破坏输入与输出一一映射的关系。
class Solution {
public:
    string tree2str(TreeNode* root) 
    {
        string str;
        if(root==nullptr)
        {
            return str;
        }
        str += to_string(root->val);
        if(root->left)
        {
            str+='(';
            str+=tree2str(root->left);
            str+=')';
        }
        else if(root->right)
        {
            str+="()"; //注意用“ ”
        } 
        if(root->right)
        {
            str+='(';
            str+=tree2str(root->right);
            str+=')';
        }
        return str;

    }
};

标签:示例,C++,括号,二叉树,str,字符串,root
From: https://blog.csdn.net/2403_85903590/article/details/141614021

相关文章

  • C++智能指针
    1.为什么需要智能指针大家来看下面这段程序我们new了两个arraydoubleDivision(inta,intb){ //当b==0时抛出异常 if(b==0) { throw"Divisionbyzerocondition!"; } return(double)a/(double)b;}voidFunc(){ int*array1=newint[10]; int*......
  • 字符串函数 (总篇章,全面解析)
    文章目录1.strlen函数函数的使用:strlen的模拟实现:分法1计数法:方法2递归法:分法3指针法:2.strcpy函数strcpy的使用:strcpy的模拟实现:3.strcat函数strcat函数的使用:strcat函数的模拟现实:4.strcmp函数strcmp函数的使用:strcmp函数的模拟实现:5.strncpy函数6.strncat函数7.s......
  • C++面向对象三大特性之一(封装)
    下面这篇文我来给大家分享C++面向对象三大特性之一(封装)。一、什么是封装?分装就是一个类中的私有成员,虽然类外不可以访问,但是我们提供一些公共的接口来间接让其他人访问到,例如一个人的名字我们起好之后就一般不会允许其他人改你的姓名,但是我们可以通过一些方式得到你的姓名......
  • C++/C区别
    C++/C差别typedef和using的差别,typedef可以用来定义一个类型,也可以用于定义别名。using还是做不到定义类型,但是可以用于别名。voidAadd(){/*code*/}voidBadd(){/*code*/}typedefvoid(*PFunc)();//定义一个函数指针类型PFuncfunc=Aadd;PFuncfu......
  • 链表简介c++
    定义:链表是一种数据结构,其中元素(也称为节点)不是连续存储的。每个节点包含数据部分和一个指向下一个节点的指针。类型:在C++中,有两种主要类型的链表:单链表(每个节点只有一个指针指向下一个节点)和双向链表(每个节点有两个指针,一个指向前一个节点,另一个指向后一个节点)。结构......
  • C++实现的最短路径问题
    最短路径问题最短路径问题是图论中的一个经典问题,旨在寻找从一个起点到一个终点的最短路径。最常见的算法包括Dijkstra算法、Bellman-Ford算法和Floyd-Warshall算法。这些算法被广泛用于导航系统、网络路由等领域。问题描述输入:一个加权图,表示图中各节点之间的连接和权......
  • C++系列学习笔记
    #include<iostream>#include<iomanip>usingnamespacestd;//namespace:命名空间的关键字//std:系统的关键字intmain(){cout<<"输入"<<endl<<"int,char,double"<<endl;intnum=0;ch......
  • 笔记——字符串
    蓝月の笔记——字符串篇摘要一些串串\(\quad\qquad\)——某yl新高一学长字串\(\quad\qquad\)——某yl新高一学长のpptWarning本文中字符串的下标有时从\(1\)开始有时从\(0\)开始,请自行分辨无特殊说明从\(1\)开始字符串长度无特殊说明为\(n\)字符串无特殊说明表示......
  • 字符串哈希 详解+例题
    字符串哈希观看讲解视频:董晓算法做的笔记理论部分字符串哈希是把不同的字符串映射成不同的整数。对于一个长度为\(n\)的字符串\(s\),我们定义它的Hash函数为:\(h(s)=\Sigma^n_{i=1}\)\(s[i]\timesp^{n-i}\)\((mod\)\(m)\)例如:字符串\(abc\),他的hash函数值......
  • C语言字符函数和字符串函数的详解及模拟实现(超详细)
    目录1.求字符串长度1.1strlen1.1.1.strlen函数介绍1.1.2.strlen函数模拟实现 2.长度不受限制的字符串函数 2.1strcpy2.1.1.strcpy函数介绍2.1.2.strcpy函数模拟实现 2.2strcat2.2.1.strcat函数介绍2.2.2.strcat函数模拟实现 2.3strcmp 2.3.1.strcmp函数介绍......