为什么在VS2017上能正常运行而在OJ上面就Runtime Error:Segmentation fault呢?求助!!!
#include<iostream>
#include<iomanip>
#include<string>
#include<queue>
#include<vector>
#include<stdlib.h>
using namespace std;
template<typename T>
class TreeNode {
public:
    T data;
    TreeNode<T> *leftChild;
    TreeNode<T> *rightChild;
    TreeNode(T data) {
        this->data = data;
        this->rightChild = NULL;
        this->rightChild = NULL;
    }
};
template<typename T>
class BinaryTree {
private:
    TreeNode<T> *root;
public:
    BinaryTree(T data);
    TreeNode<T>* getroot();
    void InsertLeft(TreeNode<T> *p, T data);
    void InsertRight(TreeNode<T> *p, T data);
    TreeNode<T>* Search(TreeNode<T> *root, T data);
    void PreOrder(TreeNode<T> *root);
    void InOrder(TreeNode<T> *root);
    void PostOrder(TreeNode<T> *root);
};
template<typename T>
BinaryTree<T>::BinaryTree(T data) {
    TreeNode<T> *newnode = new TreeNode<T>(data);
    root = newnode;
}
template<typename T>
TreeNode<T>* BinaryTree<T>::getroot() {
    return root;
}
template<typename T>
void BinaryTree<T>::InsertLeft(TreeNode<T> *p, T data) {
    TreeNode<T> *newnode = new TreeNode<T>(data);
    newnode->leftChild = p->leftChild;
    p->leftChild = newnode;
}
template<typename T>
void BinaryTree<T>::InsertRight(TreeNode<T> *p, T data) {
    TreeNode<T> *newnode = new TreeNode<T>(data);
    newnode->rightChild = p->rightChild;
    p->rightChild = newnode;
}
template<typename T>
TreeNode<T>* BinaryTree<T>::Search(TreeNode<T> *root, T data) {
    queue<TreeNode<T>*> queue;
    TreeNode<T> *q = NULL;
    queue.push(root);
    while (!queue.empty()) {
        TreeNode<T> *p = queue.front();
        queue.pop();
        if (p->data == data) {
            q = p;
        }
        if (p->leftChild != NULL) {
            queue.push(p->leftChild);
        }
        if (p->rightChild != NULL) {
            queue.push(p->rightChild);
        }
    }
    return q;
}
template<typename T>
void BinaryTree<T>::PreOrder(TreeNode<T>* root) {
    if (root != NULL) {
        cout << root->data;
        PreOrder(root->leftChild);
        PreOrder(root->rightChild);
    }
}
template<typename T>
void BinaryTree<T>::InOrder(TreeNode<T> *root) {
    if (root != NULL) {
        InOrder(root->leftChild);
        cout << root->data;
        InOrder(root->rightChild);
    }
}
template<typename T>
void BinaryTree<T>::PostOrder(TreeNode<T> *root) {
    if (root != NULL) {
        PostOrder(root->leftChild);
        PostOrder(root->rightChild);
        cout << root->data;
    }
}
int main() {
    string str;
    while (cin >> str) {
        BinaryTree<char> *bin = new BinaryTree<char>(str[0]);
        TreeNode<char> *root = bin->getroot();
        for (int i = 1; i < str.length(); i++) {
            if (str[i] != '.') {
                TreeNode<char> *p = bin->Search(root, str[(i - 1) / 2]);
                if (i % 2 == 0) {
                    bin->InsertRight(p, str[i]);
                }
                else {
                    bin->InsertLeft(p, str[i]);
                }
            }
        }
        bin->PreOrder(root);
        cout << endl;
    }
    return 0;
}

测试数据
ABCDEFGHIJKL
A.B...C.......D
ABCD.EF.G
T
ABC.D.E..FG...H
输出
ABDHIEJKCFLG
ABCD
ABDGCEF
T
ABDFGCEH

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问

相似问题

1
在vs2017上运行没有问题,在学校的oj上(gcc编译器)发生段错误,不知道错误点在哪里,求点明
1
在oj系统中提交老是出现Runtime Error,怎么修改也不行,求指点
1
杭电oj 2629题目求解惑
1
OJ题目运行错误,本地运行没问题
1
大一新生 学校oj上的问题 实在不知道哪里错了 大佬们能帮我解决一下吗?
1
Catch the cow(POJ3278) 编译器上没问题, OJ上一直runtime error?
1
这个程序我自己在编译器上通过了,但是OJ上一直runtime error。各位大神可否帮我看看代码有什么问题吗?
1
在oj上显示运行时错误,有大佬能帮忙看一下吗?
1
为什么杭电oj2024ac不了,求解?
1
为什么这道题根据程序,样例可以正确输出,却不能在OJ上AC?是我的代码出问题了吗?
1
请教大佬oj题目 计算职工工资问题
0
小白一枚,回文串和安全密码问题在codeblock运行没啥问题,但是oj上显示答案错误,大佬们能帮忙看看吗
0
请问一下这段代码提交到OJ平台为何报错RE?
1
运行时runtime error 不清楚哪里错了 求指点 oj上的
2
为什么刷OJ的时候,很多人都是使用的数组范围大约多了9
1
oj的一道很简单的题目,不知道错在哪了,请大牛指点!
1
c++ oj 题目,求大神帮忙
1
在VS上运行没有问题,但提交oj出现段错误,在VS上该如何调试?
0
请问这个代码为什么oj上tuntime error了呀,小白求解?
0
大数加减,VS上可以运行,oj上显示段错误,哪里出问题了?