私はそのプリオーダとインオーダートラバーサルでバイナリツリー条件を構築しようとしました。ビルドバイナリツリーソリューションで何が問題になっていますか?
しかし、以下のコードを実行すると、20%のテストサンプルが渡され、preorder = inorder = {1,2}で「1351 segmentation fault(core dumped)」が発生しました。
私のコードに間違いがありますか?そして、Linux上で "segmentation fault"をデバッグする方法は?
THANKS !!!あなたはそのメンバーval
、left
とright
にアクセスする際
class Solution {
/**
*@param preorder : A list of integers that preorder traversal of a tree
*@param inorder : A list of integers that inorder traversal of a tree
*@return : Root of a tree
*/
public:
TreeNode *buildTree(vector<int> &preorder, vector<int> &inorder) {
// write your code here
TreeNode * root;
if (preorder.empty() || inorder.empty()) {
cout<<"in if"<<endl;
return NULL;
}
root->val = preorder.front();
vector<int> inorder_left(inorder.begin(), inorder.begin() + getIndex(inorder, preorder.front()));
vector<int> inorder_right(inorder.begin() + getIndex(inorder, preorder.front()) + 1, inorder.end());
vector<int> preorder_left(preorder.begin() + 1, preorder.begin() + 1 + inorder_left.size());
vector<int> preorder_right(preorder.begin() + 1 + inorder_left.size(), preorder.end());
root->left = buildTree(preorder_left, inorder_left);
root->right = buildTree(preorder_right, inorder_right);
return root;
}
private:
int getIndex(vector<int> & vec, int target) {
for (int i = 0; i < vec.size(); i++) {
if (vec[i] == target) {
return i;
}
}
}
};
コアダンプをお持ちの場合は、デバッガで実行することができます – doctorlove
私が書いた日にフラッシュバックが発生します – StoryTeller
1351セグメンテーションフォールトはあなたを助けません。最初のことだけを心配してください。十分に小さなデータを使用してデバッグしやすくする。 –