バイナリツリー用のC++プログラムを作成しました。しかし、端末は、要素が配置されるべき方向を入力するためのステートメントを要求していない。 また、 "node * temp = new node"のステートメントを "node * temp = NULL"に置き換えると、プログラムの動作が停止します。C++プログラムの出力が期待通りに行われない
#include <iostream>
#include <cstring>
using namespace std;
class node {
int data;
node * left;
node * right;
public:
node * level_order(node * first);
node * create_bt(node * first);
void display(node * first);
};
//node *first=NULL;
node * node::create_bt(node * first) {
node * temp = new node;
int ele;
//char dir;
cout << "\n Enter data ";
cin >> ele;
temp->data = ele;
temp->left = NULL;
temp->right = NULL;
if (first == NULL) {
temp = first;
return first;
} else {
char dir[20];
cout << "\n Enter the direction ";
cin >> dir;
node * cur = first;
int j = 0;
while (dir[j] != '\0') {
if (dir[j] == 'l') {
cur = cur->left;
}
if (dir[j] == 'r') {
cur = cur->right;
}
j++;
}
cur = temp;
return first;
}
}
void node::display(node * first) {
if (first == NULL)
return;
cout << "\n " << first->data;
display(first->left);
display(first->right);
}
int main() {
int n;
node s;
node * first = NULL;
cout << "\n No of elements ";
cin >> n;
for (int i = 0; i < n; i++) {
first = s.create_bt(first);
}
s.display(first);
return 0;
}
質問をする前に、コードを正しくフォーマットしてください。以前の形式が実際に自分のコードで使用していたものだった場合は、後の作業で独自のコードを維持しようとするとよいでしょう。 – Zeta