讨论/题目交流/关于leetcode报错,本地vs运行成功的问题(报错原因不懂~请大佬指教)/
关于leetcode报错,本地vs运行成功的问题(报错原因不懂~请大佬指教)

题目:根据中序和后序构建子树。 题目链接

以下为Solution代码(之前的根据中序和前序也是类似的方法,r_label++,先建左子树后右子树)
以下思路:
先建右子树后左子树,r_label指向的是后序数组下标,每次递归递减。

 class Solution {
 public:
	 TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {
		 if (preorder.size() == 0) return NULL;
		 int r_label = inorder.size();
		 return getTree(preorder, inorder, 0, preorder.size() - 1, r_label);
	 }
	 TreeNode *getTree(vector<int>& preorder, vector<int>&inorder, int begin, int end, int &r_label) {
		 if (begin > end)
			 return NULL;
		 r_label--; // 每次递减一回
		 int pivot = 0;
		 for (; pivot <= end && inorder[pivot] != preorder[r_label]; pivot++); // 找到中序中的根节点
		 TreeNode *r = new TreeNode(preorder[r_label]); // 创建分支根节点
		 r->right = getTree(preorder, inorder, pivot + 1, end, r_label); // 先构建右子树
		 r->left = getTree(preorder, inorder, begin, pivot - 1, r_label); 
		 return r;
	 }
 };

 /*
测试样例:
中序遍历 inorder = [9,3,15,20,7]
后序遍历 postorder = [9,15,7,20,3]
结果输出:
3,9,20,15,7 
 */

这是报错信息:
TIM截图20200324121837.jpg
这是本地运行成功信息:
TIM截图20200324121825.jpg
将结果前序打印如下:
TIM截图20200324123551.jpg

展开讨论
wudeya发起于 2020-03-24
共 2 个讨论

第三行,你输入参数两个写反了,先输入中序的那个,然后是后序,把两个反一下就过了

TreeNode* buildTree(vector<int>& inorder, vector<int>& preorder) {

力扣的错误信息是啥