进阶根据二叉树创建字符串
题目链接
题目描述
:
你需要采用前序遍历的方式,将一个二叉树转换成一个由括号和整数组成的字符串。
空节点则用一对空括号 “()” 表示。而且你需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对
思路
:
- 下面注释代码过不了?????提示
代码如下:
class Solution { public: void _tree2str(TreeNode* root, string& ret) { if(root==nullptr) return; else { // if(root->val<0) //这个通不过 // { // root->val*=(-1); // ret.push_back('-'); // ret.push_back(root->val+'0'); // } // else // ret.push_back(root->val+'0'); ret+=to_string(root->val); } if(root->left==nullptr&&root->right==nullptr) { _tree2str(root->left,ret); //return; } else if(root->left&&root->right==nullptr) { ret.push_back('('); _tree2str(root->left,ret); ret.push_back(')'); } else if(root->left==nullptr&&root->right) { ret.push_back('('); ret.push_back(')'); ret.push_back('('); _tree2str(root->right,ret); ret.push_back(')'); } else { ret.push_back('('); _tree2str(root->left,ret); ret.push_back(')'); ret.push_back('('); _tree2str(root->right,ret); ret.push_back(')'); } } string tree2str(TreeNode* root) { string ret; //ret.push_back(root->val+'0'); _tree2str(root, ret); return ret; } };
进阶根据二叉树创建字符串
题目链接
题目描述
:
你
输入:
输出:
思路
:
1.
代码如下:
二叉树的层序遍历(变1)
题目链接
题目描述
:
给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点
思路
:
- 记录每层的size
代码如下:
class Solution { public: vector<vector<int>> levelOrder(TreeNode* root) { vector<int> tmp={}; vector<vector<int>> ret; if(root==nullptr) return ret; queue<TreeNode*> qu; int size=1; qu.push(root); while(!qu.empty()) { while(size--) { if(qu.front()->left) qu.push(qu.front()->left); if(qu.front()->right) qu.push(qu.front()->right); tmp.push_back(qu.front()->val); qu.pop(); } ret.push_back(tmp); tmp.clear(); size=qu.size(); } return ret; } };