enum color { black, red }; // black = 0, red = 1
class TreeNode{ // 노드 클래스
friend class Tree;
public:
TreeNode( const int &d ) // 노드 생성자. 서브트리를 생성한다.
: leftPtr( 0 ), data( d ), rightPtr( 0 ) // 자기자신은 입력받은 데이터로 초기화, 왼쪽 자식과 오른쪽 자식 생성
{
leftPtr->Color = black;
rightPtr->Color = black;
}
private:
TreeNode *leftPtr; // 왼쪽 자식 포인터
TreeNode *rightPtr; // 오른쪽 자식 포인터
TreeNode *parPtr; // 부모 포인터
int data; // 노드에 들어갈 데이터
color Color; // 노드의 색깔
};
오유 컴게님들 안녕하세요?
프로그래밍 과제로 레드블랙트리를 c++로 구현하고 있습니다.
레드블랙트리의 조건 중 하나가
마지막 잎노드(External Node)는 Black 이어야한다.
인데요. 이것을 구현하려고 하는데 이 부분에서 막히네요.
새로운 노드를 생성하면서 왼쪽자식과 오른쪽자식 노드들을 0으로 초기화하는데
새로운 노드는 다른 클래스의 함수 내에서 색깔을 초기화 해버리는데
자식노드들의 색깔을 black 으로 초기화시키는 구문을 어떻게 해야할지 잘 모르겠습니다...
저 코드에선 컴파일시에는 에러가 없는데 실행하거나 디버깅을 하면 프로그램이 강제종료 되어버립니다.
빨간색으로 칠해놓은 부분에서 에러가 생기는데... 대체 무슨 문제인지 모르겠습니다...
저 구문 대신 어떤 구문을 넣어야 하는지...
프로그래밍 고수님들 조언좀 부탁드립니다. ㅠㅠ