网站成功案例设计,网站 会员系统 织梦,做网站网站赚,百度浏览器主页网址题目链接
本体的难点#xff1a;
什么时候去打印左右括号#xff1f;什么时候省略#xff1f;
解题过程#xff1a;通过观察看到#xff0c;每次遍历结点之前#xff0c;打印了一个左括号#xff1b;遍历到叶子#xff0c;叶子的左右也要打印出括号来#xff08;先…题目链接
本体的难点
什么时候去打印左右括号什么时候省略
解题过程通过观察看到每次遍历结点之前打印了一个左括号遍历到叶子叶子的左右也要打印出括号来先不考虑省略。然后每个结点遍历完也要打印右括号这样才能保证包起来。 先把这个过程写出来
class Solution {
public:string tree2str(TreeNode* root) {if(rootnullptr) //根为空什么也不打印因为进入这个结点之前已经打印左括号了再出来就会打印右括号。{return ;}string str to_string(root-val);str (;str tree2str(root-left);str);str(;strtree2str(root-right);str);return str;}
};什么时候省略呢
左右孩子都为空 省略右孩子为空左孩子不为空 省略左为空右孩子不为空 不省略 //左右都为空 省略//左为空右不为空 不省略//右为空左不为空 省略
class Solution {
public:string tree2str(TreeNode* root) {if(rootnullptr){return ;}string str to_string(root-val);//左不为空必须进去因为得打印左孩子。//左为空右不为空,左括号不能省略也得进去。if(root-left || root-right){str (;str tree2str(root-left);str);}//右为空就省略了。if(root-right){str(;strtree2str(root-right);str);}return str;}
};这个代码虽然不难但是这个代码的结构很难想出来希望读者能够好好思考这道题左右括号写在哪里才能满足题目要求