前提・実現したいこと
C++で階層4、要素数15の完全二分ヒープの階層を表示させることができません。どなたか解決方法を教えていただきたいです。
C++
1node *n[15];
の部分が間違っていると思うのですが、解決方法がわかりません。
発生している問題・エラーメッセージ
エラーメッセージ
Segmentation fault: 11
コード
C++
1#include <iostream> 2using namespace std; 3 4struct node { 5 struct node *parent; // 親 6 struct node *left; // 左の子 7 struct node *right; // 右の子 8 int floor; // 階層 9}; 10 11void count_floor(node *t){ 12 if (t->left == nullptr && t->right == nullptr){ 13 return; 14 } 15 else { 16 t->left->floor = t->floor + 1; 17 count_floor(t->left); 18 t->right->floor = t->floor + 1; 19 count_floor(t->right); 20 } 21} 22 23int main() 24{ 25 node *n[15]; 26 for (int i = 0; i < 15; i++){ 27 n[i] = new node; 28 n[i]->floor = 0; 29 } 30 for (int i = 0; i < 7; i++){ 31 n[i]->left = n[2*i+1]; 32 n[i]->right = n[2*i+2]; 33 n[2*i+1]->parent = n[i]; 34 n[2*i+2]->parent = n[i]; 35 } 36 37 count_floor(n[0]); 38 39 for (int i = 0; i < 15; i++){ 40 cout << n[i]->floor << endl; 41 } 42 return 0; 43} 44
試したこと
C++
1node *n = new node*;
としてみましたが、エラーが出て動きませんでした。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/07 17:59