左と右の子にポインターを割り当てようとすることに関係しているという事実以外に、プログラムが失敗する原因はわかりません。エラー メッセージは表示されず、プログラムの実行に失敗するだけです。ポインターの割り当てが間違っているためだと思います。
構造体は次のとおりです。
struct TreeNode
{
Type nodeinfo;
BinaryTree<Type> *left;
BinaryTree<Type> *right;
};
クラスの名前は、テンプレートを使用した BinaryTree です。問題のある方法は次のとおりです。
template <typename Type>
void BinaryTree<Type>::setSubtree(Type a){
root = new TreeNode;
BinaryTree<Type> *b,*c;
root->nodeinfo=a;
b->root = s.top();
root->right = b;
s.pop();
c->root = s.top();
root->left = c;
s.pop();
s.push(root);
}
s は TreeNode* 型のスタックで、ノードを保持します。root は個々のノードです。
何度も変えたので、何から始めたか忘れてしまいました。これはテスト コードです (setInfo は問題なく動作します)。
tree.setInfo('b');
tree.setInfo('c');
tree.setSubtree('-');
ポインターを割り当てる方法についての洞察をいただければ幸いです。