问题描述
- 写一个简单的二叉树遇到了segmentation fault :11问题,求助
-
本人小白,写了个简单的二叉树练习一下,代码如下,运行时会出现segmentation fault :11错误,求助各位大大帮忙看看是什么原因?#include <iostream> #include <fstream> using namespace std; class Node { private: int content; Node *left; Node *right; public: Node(int a); ~Node(); int getcontent(); Node *getleft(); Node *getright(); void setleft(Node *a); void setright(Node *a); }; Node::Node(int a):content(a), left(NULL), right(NULL){} Node::~Node() {} int Node::getcontent() { return content; } Node * Node::getleft() { return left; } Node * Node::getright() { return right; } void Node::setleft(Node *a) { this->left = a; } void Node::setright(Node *a) { this ->right = a; } void insert(Node *pre, Node a) { if (a.getcontent() < pre->getcontent()) { if(pre->getleft() == NULL) { pre->setleft(&a); } else { insert(pre->getleft(), a); } } else if (a.getcontent() >= pre->getcontent()){ if (pre->getright() == NULL) { pre->setright(&a); } else { insert(pre->getright(), a); } } return; } void print(Node *a) { cout << a->getcontent() << " "; if (a->getleft()->getcontent()) { print(a->getleft()); } if (a->getleft()->getcontent()) { print(a->getright()); } return; } int main() { Node roof(5); for (int i = 0; i < 10; ++i) { int n; cin >> n; Node a(n); insert(&roof, a); } print(&roof); return 0; }
解决方案
一般是指针一类的问题,自己调试下
解决方案二:
整数对象a,please input 5 numbers
1 2 3 4 5 6 7 8 9 10
浮点数对象b,please input 5 numbers
整数元素对象a的元素最大值为:2整数元素对象a的元素最小值为:1
浮点数元素对象b的元素最大值为:7
浮点数元素对象b的元素最小值为:6
Press any key to continue
VC++ 6.0,没有问题
解决方案三:
void print(Node *a) {
cout << a->getcontent() << " ";
if (a->getleft() == NULL) {
print(a->getleft());
}
if (a->getright() == NULL) {
print(a->getright());
}
return;
}
你两个都是left
解决方案四:
段错误,一般是指针越界。
时间: 2024-09-12 02:46:18