python网站开发项目,千秋网站建设公司,天津专门做网站的公司的电话,暴雪公司现状牛客题霸 [输出二叉树的右视图] C题解/答案
题目描述
请根据二叉树的前序遍历#xff0c;中序遍历恢复二叉树#xff0c;并打印出二叉树的右视图
题解#xff1b;
分两个过程#xff1a; 先用前序遍历中序遍历恢复二叉树#xff0c;这个应该都会。。 打印二叉树的后视…牛客题霸 [输出二叉树的右视图] C题解/答案
题目描述
请根据二叉树的前序遍历中序遍历恢复二叉树并打印出二叉树的右视图
题解
分两个过程 先用前序遍历中序遍历恢复二叉树这个应该都会。。 打印二叉树的后视图其实就是层序遍历中每一层的最后一个元素
代码
我的代码不知为何错了调不出来了。。
class Solution {
public:/*** 代码中的类名、方法名、参数名已经指定请勿修改直接返回方法规定的值即可* 求二叉树的右视图* param xianxu int整型vector 先序遍历* param zhongxu int整型vector 中序遍历* return int整型vector*/vectorintres;vectorint solve(vectorint xianxu, vectorint zhongxu) {// write code hereTreeNode* trebulid(xianxu,zhongxu,0,0,zhongxu.size()-1);right(t);return res;}TreeNode* rebulid(vectorint pre,vectorint in,int root,int l,int r){if(lr)return NULL;TreeNode* treenew TreeNode(pre[root]);int midl;while(midrpre[root]!in[mid])mid;tree-leftrebulid(pre, in, root1, l, mid);tree-rightrebulid(pre,in,root1mid-l,mid1,r);return tree;}void right(TreeNode *root){queueTreeNode*q;if(!root)return ;q.push(root);while(!q.empty()){int sizeq.size();res.push_back(q.front()-val);while(size--){TreeNode* nodeq.front();q.pop();if(node-right)q.push(node-right);if(node-left)q.push(node-right);}}}
};借鉴的某大佬代码
class Solution {
public:/*** 代码中的类名、方法名、参数名已经指定请勿修改直接返回方法规定的值即可* 求二叉树的右视图* param xianxu int整型vector 先序遍历* param zhongxu int整型vector 中序遍历* return int整型vector*/TreeNode* mytree(vectorint x,vectorint z){if(x.size()0||z.size()0)return nullptr;TreeNode* rootnew TreeNode(x[0]);int tdistance(z.begin(),find(z.begin(),z.end(),x[0]));vectorint xleft(x.begin()1,x.begin()t1);vectorint xright(x.begin()t1,x.end());vectorint zleft(z.begin(),z.begin()t);vectorint zright(z.begin()t1,z.end());root-leftmytree(xleft,zleft);root-rightmytree(xright,zright);return root;}vectorint solve(vectorint xianxu, vectorint zhongxu) {// write code hereTreeNode* rootmytree(xianxu,zhongxu);vectorint res;queueTreeNode* que;if(rootnullptr) return res;que.push(root);while(!que.empty()){int lenque.size();for(int i0;ilen;i){TreeNode* tque.front();que.pop();if(ilen-1)res.emplace_back(t-val);if(t-left) que.push(t-left);if(t-right) que.push(t-right);}}return res;}
};