나는 나의 구조체를 포함하는 .H 파일을 가지고 있고이 파일을 편집하지해야합니다 (I 2 개 값을 삽입 할 코드를 작성했습니다C에서 이진 검색 트리에 값을 삽입 하시겠습니까?
struct KnightTree
{
int key;
int level;
int balance; //will be used in AVL only, and be ignored in other cases.
KnightTree* pLeftChild;
KnightTree* pRightChild;
};
그리고 여기 내 코드 쓰기 .cpp 파일을 BST에로) 키 레벨 : 나는 그것을 실행할 때
void BSTinsert(KnightTree* tree, int k, int lvl)
{
KnightTree* newnode;
if (tree == NULL)
{
newnode->key=k;
newnode->level=lvl;
newnode->pLeftChild=NULL;
newnode->pRightChild=NULL;
tree = newnode;
}
else
{
if (tree->key > k)
BSTinsert(tree->pLeftChild,k,lvl);
else if (tree->key <= k)
BSTinsert(tree->pRightChild,k,lvl);
}
}
하지만, 콘솔 자체가 약 3 초 오류 팝업은 "생각은" 그래서 난 에있다 "exe 인 작동이 중지되었습니다"라고 프로그램을 닫으십시오. 지금 ... 나는 비주얼 사용하고 난의 간단한 생각하지만 난 좀 혼동하고있어 C++ 6.0 (I이 이전 버전을 사용해야합니다 ...)
가 너희들을 감사합니다!
는 일반적으로 이러한 오류가 버퍼에 관련된 코드를 디버깅했고, 버퍼가 버퍼를 작성 버퍼의 할당 크기는 인쇄 문을 넣을 수 있습니다 그리고 우리가 두 가지로 갈 수 있도록, 전체 코드를 포함하지 않았다 어떤 코드 블록에 문제가 있는지 알아보십시오. –
무한 루프가 있다고 생각합니다. 첫 번째 else 문에서 매번 스스로 실행하고 있습니다. 처음에 당신이 BSTInsert로 전화 (트리 -> pLeftChild, K, LVL) "경우 다른"부분에 빠지지 자체를 다시 실행하고 다음 다음부터, 항상 경우 "이 같은 지역에 해당합니다 (트리 - > 키 <= K) .. (항상 == 제 1 회 실행 후 K) ... 적어도 내가 디버깅 할 때이 경우 : – FreudianSlip