の左側のビューを表示しながら、私は次のように自分で木を初期化している: - (私は大きいため、コードを削除している)他のすべての機能が働いていたため、私は、上記のプログラムを実行するとエラー木
#include<iostream>
#include<queue>
#include<string>
using namespace std;
struct node{
int data = 0;
node* left = nullptr;
node* right = nullptr;
};
void construct(struct node* &tree)
{
tree->data = 66;
tree->left = new node;
tree->right = new node;
tree->left->left = new node;
tree->left->left->left = new node;
tree->left->left->right = new node;
tree->left->left->left->left = new node;
tree->left->left->left->right = new node;
tree->left->left->left->right->right = new node;
tree->right->right = new node;
tree->right->left = new node;
tree->right->left->left = new node;
tree->right->left->right = new node;
tree->right->left->right->left = new node;
tree->left->data = 50;
tree->left->left->data = 46;
tree->left->left->left->data = 89;
tree->left->left->right->data = 37;
tree->left->left->left->left->data = 53;
tree->left->left->left->right->data = 81;
tree->left->left->left->right->right->data = 86;
tree->right->data = 72;
tree->right->left->data = 78;
tree->right->right->data = 71;
tree->right->left->left->data = 87;
tree->right->left->right->data = 35;
tree->right->left->right->left->data = 17;
}
void show_tree_view(struct node* const &tree, string view)
{
queue<struct node*> box;
box.push(tree);
cout << box.front()->data << " ";
int size = box.size();
while(!box.empty())
{
for(int i = 0; i < size; ++i)
{
struct node* current = box.front();
box.pop();
if(current->left != nullptr) box.push(current->left);
if(current->right != nullptr) box.push(current->right);
}
size = box.size();
if(view == "left") cout << box.front()->data << " ";
if(view == "right") cout << box.back()->data << " ";
}
cout << endl;
}
int main()
{
struct node* tree = new node;
construct(tree);
/*int height = calculate_height_by_recursion(tree);
cout << "height with recursion : " << height << endl;
height = calculate_height_without_recursion(tree);
cout << "height without recursion : " << height << endl;*/
cout << "Left view of tree is : ";
show_tree_view(tree, "left");
//cout << "Right view of tree is : ";
//show_tree_view(tree, "right");
return 0;
}
ただし、左右のビューを表示する機能は動作していません。どちらもエラーを示していません。私はプログラムを実行すると、セグメンテーション違反を示しています - 出力 -
[email protected]:~/Ujjal$ ./simple_tree
Segmentation fault (core dumped)
私は上記のデバッグが、バグをキャッチすることができませんでした。提案が必要です。
この狂ったコードをデバッグする準備ができていませんでしたか?また、 'node'をどこにでも置く必要はありません。 C++は 'C'ではありません。 – PaulMcKenzie
@ PaulMcKenzieこれは、高さを計算するためのコード(レベルオーダートラバーサルを使用)を書いたときにうまくいき、同じコードをコピーして貼り付けてコアダンプを表示するためです。それはあなたが知っている本当に迷惑だ;) –