c++-写一个简单的二叉树遇到了segmentation fault :11问题,求助

问题描述

写一个简单的二叉树遇到了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

c++-写一个简单的二叉树遇到了segmentation fault :11问题,求助的相关文章

请大神帮忙写一个简单的聚类算法程序,在线等……用matlab或者java实现

问题描述 请大神帮忙写一个简单的聚类算法程序,在线等--用matlab或者java实现 Step1:将N个数据,按照从小到大的顺序排序 d1.d2,.....dn:其中d1时最小值,dn是最大值 聚类判别阈值计算方法为: Step2:让每个数据都作为一个类,那么有 {d1},{d2},{d3},.....{dn} Step3:计算聚类中心 假设共有P个类,那么1<=k<=P,其中r代表每个类中数据的个数,同时计算相邻两个聚类中心之间的距离,如下 Step4:找出相邻两个聚类中心的最小值 Ste

java中用集合写一个简单的登录功能。麻烦大家看一看

问题描述 java中用集合写一个简单的登录功能.麻烦大家看一看 //这是注册的方法 public static void reg(){ Collection id=new ArrayList();//账户 Collection passWord=new ArrayList();//密码 Scanner sc=new Scanner(System.in); System.out.println("请输入账号:"); id.add(sc.next()); System.out.printl

学习servlet,写一个简单的Helloword出现404错误

问题描述 学习servlet,写一个简单的Helloword出现404错误 解决方案 不需要 /servlet 解决方案二: 解决方案三: web.xml内容贴下来看看. 可以参考 我写的http://blog.csdn.net/evankaka/article/details/45151569 解决方案四: url里把[/Hello]改成[/HelloServlet] 和你Web.xml里配置的url-pattern一样. 解决方案五: 一个简单的Servlet 解决方案六: 采用servle

iis-用VisualStudio2012写一个简单的网站

问题描述 用VisualStudio2012写一个简单的网站 用VisualStudio2012写一个简单的网站,主要想学一下怎么用VS写网站.IIS安装好了用http://localhost打不开,百度方法用遍了都没解决,就没有一个会的么?!

springmvc-用jsp写一个简单的登录页面

问题描述 用jsp写一个简单的登录页面 求写一个登录页面,有form表单,然后能提交到数据库.框架是spring,数据库是sql,用java,jsp写..我是新手,所以恳求大神帮帮我.非常感谢谢.. 解决方案 form表单里面放输入框组,用于填写数据,像登陆这种涉及隐私的操作,最好使用post方式提交, 在action层,我看到你只提到了spring,那就直接servlet来接收数据进行处理,在doPost中通过request.getParameter(str)获取参数,经过一系列校验之后,就可

checkbox-刚学完JS和servlet,写一个简单的注册登录页面

问题描述 刚学完JS和servlet,写一个简单的注册登录页面 ,想把checkbox选中的的数据和下拉列表选中的的年月日组合成字符串发送给servlet,该怎么做,求大神指教 解决方案 username: password: 表单 action 对应的servlet method 提交方式,对应servlet的doPost和doGet方法 在servlet中写 req.getParameter("username"); req.getParameter("password&

sdl初学问题-写一个简单文字游戏,需要学什么。

问题描述 写一个简单文字游戏,需要学什么. 简单文字游戏,有界面,有跟新什么的. 水平 初学c语言 初学sdl部分 另外誰有sdl2.0中文教程,给个链接谢谢. 解决方案 中文教程应该是没有的,初学要做游戏的话而且要C语言的话,建议用EasyX.详情可以参考:www.easyx.cn 解决方案二: http://download.csdn.net/detail/frankzdy/3481870 解决方案三: 要看你想用什么做,做成什么样的,个人觉得慕课网和w3cSchool这两个网站不错,知识很

软件工程-如何从写一个简单程序到写一个工程过渡?

问题描述 如何从写一个简单程序到写一个工程过渡? 最近学习Python基本上一些基本语法都已经学完了,但是觉得模仿一些Python实战后,还是觉得离工程有一段距离,大家是怎么完成这一段过渡的? 解决方案 平时多积累,关键要吃透教材,狂做案例 解决方案二: 写的一个简单的RestfulWCF程序写一个简单的 JGroups 程序C++写的书上一个简单的电话薄程序----------------------

写一个简单的工作流,基于petri网

写一个简单的工作流一直停留在我的"计划"中,最近趁改造绩效系统的机会,决定自己写一个基于petri网原理的工作流来改写绩效考核流程部分.基于petri网的工作流的基本算法,就是当每一个firing发生后,应当遍历整个流程重新改变transition的enable,那么当资源驱动某个transition其实就是将它的输入place中的token转移到输出place.大概的接口类似: WorkFlowManager wm = new BasicWorkflowManager(this.wo