asp.net 开发网站开发,iis5.1建网站,用python做的网站多吗,凡科建站可以多人协作编辑吗二叉树进阶题目 606. 根据二叉树创建字符串解题思路及实现 102. 二叉树的层序遍历解题思路及实现 107. 二叉树的层序遍历 II解题思路及实现 606. 根据二叉树创建字符串
描述
给你二叉树的根节点 root #xff0c;请你采用前序遍历的方式#xff0c;将二叉树转化为一个由括号… 二叉树进阶题目 606. 根据二叉树创建字符串解题思路及实现 102. 二叉树的层序遍历解题思路及实现 107. 二叉树的层序遍历 II解题思路及实现 606. 根据二叉树创建字符串
描述
给你二叉树的根节点 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)” 解释和第一个示例类似但是无法省略第一个空括号对否则会破坏输入与输出一一映射的关系。 解题思路及实现 class Solution {
public:string tree2str(TreeNode* root) {if(root nullptr)return string();string str;strto_string(root-val);if(root-left){str(;strtree2str(root-left);str);}else if(root-right)//走到这里左一定为空{str();}if(root-right){str(;strtree2str(root-right);str);}return str;}
};102. 二叉树的层序遍历
给你二叉树的根节点 root 返回其节点值的 层序遍历 。 即逐层地从左到右访问所有节点。
示例 输入root [3,9,20,null,null,15,7] 输出[[3],[9,20],[15,7]] 解题思路及实现 class Solution {
public:vectorvectorint levelOrder(TreeNode* root) {queueTreeNode* q;vectorvectorint vv;int LevelSize0;if(root){q.push(root);LevelSize1;}while(!q.empty()){vectorint v;//一层一层出while(LevelSize--){TreeNode* frontq.front();q.pop();v.push_back(front-val);if(front-left)q.push(front-left);if(front-right)q.push(front-right);} vv.push_back(v);//当前一层出完了下一层都进队列了那q.size()就是下一层数据数LevelSizeq.size();}return vv;}
};107. 二叉树的层序遍历 II
给你二叉树的根节点 root 返回其节点值 自底向上 的层序遍历 。 即按从叶子节点所在层到根节点所在的层逐层从左向右遍历
示例 输入root [3,9,20,null,null,15,7] 输出[[15,7],[9,20],[3]] 解题思路及实现
这道题其实就是上面的变形大家应该有这个思路。把结果翻转一下就好了。
class Solution {
public:vectorvectorint levelOrderBottom(TreeNode* root) {queueTreeNode* q;vectorvectorint vv;int LevelSize0;if(root){q.push(root);LevelSize1;}while(!q.empty()){vectorint v;//一层一层出while(LevelSize--){TreeNode* frontq.front();q.pop();v.push_back(front-val);if(front-left)q.push(front-left);if(front-right)q.push(front-right);} vv.push_back(v);//当前一层出完了下一层都进队列了那q.size()就是下一层数据数LevelSizeq.size();}reverse(vv.begin(),vv.end());return vv;}
};