2016-10-03 2 views
-1

내 숙제에 대한 이진 검색 트리를 만들고 있었다지만 inorder를 에 대한 출력을 표시되지, 예약 주문postorder. 비록 내가 coutinorderpreorderpostorder 기능으로 사용하고 있지만 아직 출력이 나오지 않습니다. 내가 느끼는이 오류는 아직 내가 은을받지 못한이진 검색 트리 : 없음 출력

createBst(r, val); 

OP에서

#include <iostream> 

using namespace std; 

struct node 
{ 
    int info; 
    struct node *left; 
    struct node *right; 
}*r; 
struct node * createBst(struct node *r, int val) 
{ 

    if (r == NULL) 
    { 
     r = new node; 
     r->info = val; 
     r->left = NULL; 
     r->right = NULL; 
    } 
    else if (val <= r->info) 
    { 
     // cout<<r->left<<" "; 
     r->left = createBst(r->left, val); 

    } 
    else 
    { 
     r->right = createBst(r->right, val); 
     cout << r->right << " "; 
    } 
    return r; 
} 

void inOrder(struct node *r) 
{ 
    if (r != NULL) 
    { 
     inOrder(r->left); 
     cout << r->info; 
     inOrder(r->right); 
    } 
} 

void preOrder(struct node *r) 
{ 
    if (r != NULL) 
    { 
     cout << r->info; 
     preOrder(r->left); 
     preOrder(r->right); 
    } 
} 

void postOrder(struct node *r) 
{ 
    if (r != NULL) 
    { 
     postOrder(r->left); 
     postOrder(r->right); 
     cout << r->info; 
    } 
} 

int main() 
{ 
    r = NULL; 
    int n, val; 
    cout << "Enter the number of element" << endl; 
    cin >> n; 
    for (int i = 0; i < n; i++) 
    { 
     cin >> val; 
     //cout<<"check"; 
     createBst(r, val); 
    } 
    cout << "Inorder" << endl; 
    //cout<<r->info<<endl; 
    inOrder(r); 
    cout << endl; 
    cout << "PreOrder" << endl; 
    preOrder(r); 
    cout << endl; 
    cout << "PostOrder" << endl; 
    postOrder(r); 
    cout << endl; 
} 
+0

_ 출력하지 않음 _. 이것은 꽤 모호한 진술이다. 컴파일 중 오류가 있습니까? 이 IDE를 컴파일하는 데 사용하고있는 IDE는 무엇입니까? –

답변

1

:-) 사전에 감사합니다 친절하게 나를 도와 ... 그것에 대해 확실하지 않다 createBst 기능에 자동 가변 r

struct node * createBst(struct node *r, int val) 

으로는 동일한 r 등이 아닌 위로 때문에 r 업데이트

struct node 
{ 
    int info; 
    struct node *left; 
    struct node *right; 
}*r; 

r = createBst(r, val); 

또는 참조 포인터를 취할

struct node * createBst(struct node *r, int val) 

을 변화시킴으로써 수정 될 수있다. 주제 끄기

struct node * createBst(struct node * & r, int val) 

, 영업 이익은 전역 변수로 r과 일부 재미 컴파일러와 논리 오류를 스스로 설정 한 다음 그 기능의 자동 변수로 광범위 변수 이름 r를 사용하여. 한 오타와 깨끗한 "변수가 정의되지 않은"메시지는 훨씬 더 복잡해집니다.

그리고

"TEH noobz를"그 날 조롱 그냥 여기 이기적인 자식하게 해결 여기에 *r을 잃게하는 방법을 설명 때문이 아니라 :

struct node 
{ 
    int info; 
    struct node *left; 
    struct node *right; 
}*r; 

및 상기

node * r; 

선언 상단은 main입니다. main이 끝나면 메모리 누수를 방지하기 위해 모든 노드를 BST 및 delete 반복하여 반복하는 것이 좋습니다. 나는 그것을 설명하지 않는 가학적인 고문자로 충분하다.

+0

@ShaantamAnand이 사이트의 사용 방법을 설명하는 [** help tour **] (https://stackoverflow.com/tour)를 읽으십시오. 정답은 업 티크 (up-ticks)와 답 선택 (answer selection)에 의해 인정되며 어느 쪽도하지 않았다. 만기가되는 곳에서 신용을 계속 제공하지 않으면 사람들은 단순히 질문에 답하는 것을 멈추게됩니다. – WhozCraig