binary tree에서 삽입 부분을 만들고 있는데 삽입 부분부터 실행이 안돼서 뭐가 문제인지 모르겠네요.
Tree를 관리할 Tree , Node를 관리할 TreeNode, Main으로 구성되어 있는데요.
소스 보시면 Tree 클래스 소스에서 수행을하다가 G를 삽입하고 그 후에 I를 삽입하는 과정에서 current->rightnode가 null이기때문에 newNode로 Node를 만들어서 current->rightnode를 새로운 노드로 지정하려고 하는데 그 부분에서 에러가 뜹니다...
뭐가 어디서 문제인지 디버깅을 해봐도 주소가 할당이 안된것에 계속 데이터를 집어넣으려고 해서 문제가 되는것 같은데 어렵네요..
java만 4년정도 하다가 c/c++을 하려고 하니 힘드네요 (java에서 잘 돌아가는 코드 포인터써서 c++로 만들어보고 있는 중입니다.)
TreeNode.h
#pragma once
#include <iostream>
class TreeNode {
public:
char data;
TreeNode *leftnode;
TreeNode *rightnode;
TreeNode::TreeNode() {
printf("TreeNode create 1 \n");
data = 0;
leftnode = NULL;
rightnode = NULL;
}
TreeNode::TreeNode(char d) {
data = d;
leftnode = NULL;
rightnode = NULL;
}
};
-----------------------
Tree.cpp
#include <iostream>
#include "헤더.h"
class Tree {
public :
TreeNode *root; // 루트 노드 변수 선언
Tree() {
root = new TreeNode; // 루트 노드 힙 메모리 할당
}
void insertBST(char data) { // BST에 데이터 삽입
*root = insertData(root, data);
}
TreeNode insertData(TreeNode *root, char data) { // 노드를 할당하여 데이터 삽입
TreeNode *current = new TreeNode();
current = root; //루트 노드를 현재 노드로 지정
TreeNode newNode(data); // data를 저장할 노드
if (current == nullptr || current->data == NULL) { //루트 노드가 비어있거나 데이터가 NULL이면 새로운 노드 생성
return newNode;
}
else {
if (current->data >= newNode.data) { // 노드 데이터 값 비교해서 왼쪽 노드로 추가
*current->leftnode = insertData(current->leftnode, data);
return *current;
}
else { // 노드 데이터 값 비교해서 오른쪽 노드로 추가
*current->rightnode = insertData(current->rightnode, data);
return *current;
}
}
delete current;
}
};
-------------------------------------
TreeMain.cpp
#pragma once
#include <iostream>
#include "헤더.h"
#include "Tree.cpp"
int main() {
int num = 0;
Tree *bst = new Tree;
bst->insertBST('G');
bst->insertBST('I');
bst->insertBST('H');
bst->insertBST('D');
bst->insertBST('B');
bst->insertBST('M');
bst->insertBST('N');
bst->insertBST('A');
bst->insertBST('J');
bst->insertBST('E');
bst->insertBST('Q');
// bst 값 확인 코드는 이렇게 해두고 브랙포인트 걸어서 bst에 들어간 값 확인중입니다.
printf("printf Binary Tree ");
return 0;
}
10년 전
0개의 댓글이 있습니다.
정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면
온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야
합니다. 현재 문제를 푸셨습니다.
Tempo
binary tree에서 삽입 부분을 만들고 있는데 삽입 부분부터 실행이 안돼서 뭐가 문제인지 모르겠네요.
Tree를 관리할 Tree , Node를 관리할 TreeNode, Main으로 구성되어 있는데요.
소스 보시면 Tree 클래스 소스에서 수행을하다가 G를 삽입하고 그 후에 I를 삽입하는 과정에서 current->rightnode가 null이기때문에 newNode로 Node를 만들어서 current->rightnode를 새로운 노드로 지정하려고 하는데 그 부분에서 에러가 뜹니다...
뭐가 어디서 문제인지 디버깅을 해봐도 주소가 할당이 안된것에 계속 데이터를 집어넣으려고 해서 문제가 되는것 같은데 어렵네요..
java만 4년정도 하다가 c/c++을 하려고 하니 힘드네요 (java에서 잘 돌아가는 코드 포인터써서 c++로 만들어보고 있는 중입니다.)
10년 전