Announcement

Collapse
No announcement yet.

Hỏi về cây nhị phân tìm kiếm và ứng dụng của cây nhị phân tìm kiếm

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Hỏi về cây nhị phân tìm kiếm và ứng dụng của cây nhị phân tìm kiếm

    Chào mọi người ạ!
    Em tên Lê Văn Hạnh, lớp KHTN2015.
    Cho em hỏi cái code này của em sai ở đâu ạ?
    Chương trình của em đơn giản chỉ là thêm 1 phần tử vào cây nhị phân tìm kiếm rồi sau đó in ra cây theo tứ tự NLR thôi ạ.
    Chương trình của em bị lỗi cái thủ tục them(int x) của em. Em làm pascal thì được rồi ạ. Nhưng C++ không được.
    PHP Code:
    #include <stdio.h>
    struct TREE{
        
    int key;
        
    struct TREE *left, *right;
    };
    void them(TREE *tint x){
        if (
    t!=NULL){
            if (
    t->key<x) {
                
    them(t->rightx);
                return;
            }
            else{
                 
    them(t->leftx);
                 return;
            }
        }
        
    = new TREE;
        
    t->key=x;
        
    t->left=NULL;
        
    t->right=NULL;
    }
    void NLR(TREE *t){
        if (
    t!=NULL){
            
    printf("%d "t->key);
            
    NLR(t->left);
            
    NLR(t->right);
        }
    }
    int main(){
        
    int n;
        
    TREE *Tree;
        
    Tree = new TREE;
        
    scanf("%d", &n);
        for (
    int i=0i<ni++){
            
    int x;
            
    scanf("%d", &x);
            
    them(Treex);
        }
        
    NLR(Tree);

    Last edited by toannv; 02-10-2015, 11:17.

  • #2
    Trong hàm main() bạn đã khởi tạo Tree = new TREE;
    vậy khi gọi hàm them(Tree,x)
    đoạn này sẽ được chạy:
    PHP Code:
     if (t!=NULL){
            if (
    t->key<x) {
                
    them(t->rightx);
                return;
            }
            else{
                 
    them(t->leftx);
                 return;
            }
        } 
    Mà cây con bên trái(t->left) lẫn cây con bên phải(t->right) đều chưa được khởi tạo nên bạn thêm giá trị vào sẽ lỗi thôi.
    K10 năm nay giỏi nhỉ? mới năm nhất mà đã nghiên cứu đến đây rồi. Tương lai sẽ sáng sủa lắm đây, chúc bạn gặt hái được nhiều thành công nhé!
    Last edited by 11520200; 02-10-2015, 12:13.

    Comment


    • #3
      mình mà năm nhất đọc trúng bài này chắc tủi thân lắm :cry:

      Comment


      • #4
        PHP Code:
        int main(){
            
        int n;
            
        TREE *Tree;
            
        Tree = new TREE;      //chỗ này Tree xin cấp phát 1 ô nhớ, Tree->key=????, Tree->left=????, Tree->right=????
            
        scanf("%d", &n);
            for (
        int i=0i<ni++){
                
        int x;
                
        scanf("%d", &x);
                
        them(Treex);
            }
            
        NLR(Tree);

        PHP Code:
        void them(TREE *tint x){
            if (
        t!=NULL){
                if (
        t->key<x) {           //đến đây t->key = Tree->key ở trên là ????, không biết so sánh kiểu gì nên lỗi
                    
        them(t->rightx);
                    return;
                }
                else{
                     
        them(t->leftx);      //ở đây nếu x=t->key nó cũng thêm x vào cây luôn, trong khi BST(binary search tree) không có phần tử trùng
                     
        return;
                }
            }
            
        = new TREE;
            
        t->key=x;
            
        t->left=NULL;
            
        t->right=NULL;

        Comment


        • #5
          Chắc bạn này code liên tục quá a ơi.
          aothungiadinh.info , http://ow.ly/SUVH30dWNIr

          Comment

          LHQC

          Collapse
          Working...
          X