做网站销售工资怎么样,厦门网,郑州做网站那家做的好,如何做中英文网站设计给你二叉树的根节点root#xff0c;请你采用前序遍历的方式#xff0c;将二叉树转化为一个由括号和整数组成的字符串#xff0c;返回构造出的字符串。
空节点使用一对空括号对root表示#xff0c;转化后需要省略所有不影响字符串与原始二叉树之间的一对一映射…给你二叉树的根节点root请你采用前序遍历的方式将二叉树转化为一个由括号和整数组成的字符串返回构造出的字符串。
空节点使用一对空括号对root表示转化后需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。
示例一 输入root [1,2,3,4]
输出1(2(4))(3)
解释初步转化后得到 1(2(4)())(3()()) 但省略所有不必要的空括号对后字符串应该是1(2(4))(3) 。
示例二 输入root [1,2,3,null,4]
输出1(2()(4))(3)
解释和第一个示例类似但是无法省略第一个空括号对否则会破坏输入与输出一一映射的关系。 这是一道经典的二叉树OJ题考察了做题人对前序遍历以及二叉树部分知识的掌握程度常见方法使用递归实现首先要读懂题目题目根本的要求就是将树以前序遍历的格式保存在字符串中并返回顾名思义就是先保存根节点然后将左子树用()保存再将右子树用()保存如果左子树为空则只保存括号若右子树为空则直接省略因为如果左子树为空直接省略直接保存右子树就会导致无法分辨该节点到底是左节点还是右节点所以左节点不能直接省略。
class Solution {
public:string tree2str(TreeNode* root) {if(rootnullptr)//判空return;//to_string可以将数字转变为字符并返回该字符string retto_string(root-val);//前序遍历先将当前节点的值赋给字符串if(root-left!nullptr||root-right!nullptr)//如果有子树再继续往下递归{ret(;//无论有没有左子树都要给所以不用判断直接给rettree2str(root-left);ret);if(root-right!nullptr)//右子树判空如果为空就直接不进入递归有值再进入{ret(;rettree2str(root-right);ret);}}return ret;//返回字符串}
};