struct Tnode {
Tnode *left;
Tnode *right;
int content;
Tnode (int item = 0) {
this->content = item;
left = nullptr;
right = nullptr;
}};
class KrTree {
private:
Tnode* root;
void printHelper (Tnode* root) {
if(!root) {
return;
}
printHelper(root->left);
cout << root->content << " ";
printHelper(root->right);
}
void addHelper (Tnode *root, int item) {
if (root->content < item) {
if (root->right) {
addHelper(root->right, item);
} else {
root->right = new Tnode (item);
}
}else {
if (root->left) {
addHelper(root->left, item);
} else {
root->left = new Tnode (item);
}
}
}
public:
// KrTree(){
// }
void addTreeNode (int item) {
if (root){
this->addHelper(root, item);
} else {
root = new Tnode(item);
}
}
void tnodes_count() {
}
void deleteTreeNode() {
}
void printTree() {
printHelper (this->root);
}
//~KrTree(){}};
上記はバイナリ検索ツリーを意味しています。私は私のc torとd torにコメントしています。私の問題はコードが上手く動作していますが、私のc-torとd-torを有効にするとセグメンテーション違反が発生します。私はここで非常に愚かな何かが欠けていますことを知っているがc-torとd-torを持つと、セグメンテーションフォールトが発生しますが、セグメンテーションフォールトが発生しない場合は
KrTree* tree = new KrTree();
tree->printTree();
tree->addTreeNode(7);
tree->addTreeNode(2);
tree->addTreeNode(10);
tree->addTreeNode(1);
tree->addTreeNode(5);
tree->addTreeNode(9);
tree->addTreeNode(20);
tree->printTree();
:ここ
は、クライアントコードです。私のc-torを有効にするホエーを教えてください。そして、d-torはセグメンテーションエラーを返します。
マイナーなタイプミス//〜KrTree(){}}; – Amaresh
[ideone](http://ideone.com/jkoXkV)で正常に動作します。具体的にはセグメンテーションフォルトがどこにあるのですか?それは何を書いたり、逆参照しようとしていますか?どのようなコンパイラなどを使用していますか? – Rup
@Amaresh * c-torとd-torを持つとセグメンテーションフォールトは発生しませんが、セグメンテーションフォールトがない場合* - もちろん、バグ関数が呼び出されていないとエラーは表示されません。 – PaulMcKenzie