Từ 1 tới 5 trên tổng số 5 kết quả

Đề tài: Giải thuật | Code cây nhị phân, check giùm mình với?

  1. #1
    Ngày gia nhập
    08 2008
    Nơi ở
    ha noi
    Bài viết
    79

    Mặc định Giải thuật | Code cây nhị phân, check giùm mình với?

    Mình đang học về cây nhị phân bởi vậy code vẫn còn 1 2 chỗ ko được chuẩn cho lắm nhờ mọi người check dùm đây là code của mình
    Code:
    #include "stdio.h"
    #include "conio.h"
    #include "stdlib.h"
    
    struct node
    	{
    		int infor;
    		struct node *left;
    		struct node *right;
    	};
    
    
    void insear(node *root,node *p)
    	{
    		if(p->infor<root->infor)
    		if(root->left)	insear(root->left,p);
    			else	root->left=p;
    		else if(root->right)	insear(root->right,p);
    			else	root->right=p;
    
    	}
    
    void nhap_cay(node *root)
    	{
    		int e;
    		node *p;
    		root=NULL;
    		do
    		{
    			printf("Nhap vao cay(nhap nut -1 de ket thuc): ");
    			scanf("%d",&e);
    			if(e!= -1)
    				{
    					p=(node*)malloc(sizeof(node));
    					p->infor=e;
    					p->left=NULL;
    					p->right=NULL;
    					if(root==NULL)	root=p;
    				}
    		else
    			insear(root,p);
    		}while(e!= -1);
    	}
    
    void NLR(node *root)
    	{
    		if(root!=NULL)
    			{
    				printf(" %d ",root->infor);
    				NLR(root->left);
    				NLR(root->right);
    			}
    	}
    
    
    
    
    void main(void)
    	{
    		clrscr();
    		node *root;
    		nhap_cay(root);
    		NLR(root);
    		getch();
    	}
    Lỗi của code trên là khi mình chạy ctrinh xog thì nó bị bung luôn nó out thẳng luôn ra khỏi dos mình ko biết code sai hay thiếu ở chỗ nào nhờ mọi người check dùm
    u never know

  2. #2
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    Thẳng thắn nhé!

    Không thấy có hàm Init() vậy root bắt đầu là gì? Bạn viết thêm hàm khởi tạo rồi sửa lại hàm Insert() (vì hiện đang chuối quá).

    Hàm nhập cây, với điều kiện if else như vậy thì làm sao nhập giá trị được nhỉ, nếu e != 1 thì tạo nút, còn không thì chưa có nút sao insert()

    Bạn cố gẳng sửa lại thử nhé.

  3. #3
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    Lâu không nghịch cây.
    C Code:
    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. /*
    4. */
    5. struct node
    6. {
    7.     int infor;
    8.     node* left;
    9.     node* right;
    10. };
    11.  
    12. typedef struct node* NODE;
    13.  
    14. void Init(NODE *root)
    15. {
    16.     *root = NULL;
    17. }
    18.  
    19. void Insert(NODE *root, NODE p)
    20. {
    21.     if (*root==NULL) *root = p;
    22.     else if ((*root)->infor > p->infor) Insert(&(*root)->left,p);
    23.     else Insert(&(*root)->right,p);
    24. }
    25.  
    26. void EnterTree(NODE *root)
    27. {
    28.     int e;
    29.     NODE p;
    30.     Init(root);
    31.     do
    32.     {
    33.         printf("Nhap vao cay(nhap nut -1 de ket thuc): ");
    34.         scanf("%d",&e);
    35.         if(e == -1) break;
    36.  
    37.         p = (NODE) malloc (sizeof(struct node));
    38.         p->infor = e;
    39.         p->left = NULL;
    40.         p->right = NULL;
    41.         Insert(root,p);
    42.     }while(1);
    43. }
    44.  
    45. void NLR(NODE *root)
    46. {
    47.     if((*root) != NULL)
    48.     {
    49.         printf(" %d ", (*root)->infor);
    50.         NLR(&(*root)->left);
    51.         NLR(&(*root)->right);
    52.     }
    53. }
    54.  
    55.  
    56.  
    57. int main()
    58. {
    59.     NODE root;
    60.     EnterTree(&root);
    61.     NLR(&root);
    62.     return 0;
    63. }

  4. #4
    Ngày gia nhập
    04 2013
    Bài viết
    1

    mấy bác cho hỏi. theo em dc biết thì cái cây nhị phân tìm kiếm thì mới có phần so sánh giá trị mà mình muốn thêm vào với node gốc từ đó sẽ gọi đề quy chèn bên trái hay bên phải. còn cái bài của chủ thớt theo mình là cây nhị phân tìm kiếm không phải nhị phân. không biết là có đúng không. và mong các bác cho em xin cái code của nhị phân xem nó ra sao với ạ

  5. #5
    Ngày gia nhập
    01 2013
    Bài viết
    1,477

    Trích dẫn Nguyên bản được gửi bởi loc13206 Xem bài viết
    mấy bác cho hỏi. theo em dc biết thì cái cây nhị phân tìm kiếm thì mới có phần so sánh giá trị mà mình muốn thêm vào với node gốc từ đó sẽ gọi đề quy chèn bên trái hay bên phải. còn cái bài của chủ thớt theo mình là cây nhị phân tìm kiếm không phải nhị phân. không biết là có đúng không. và mong các bác cho em xin cái code của nhị phân xem nó ra sao với ạ
    Đây là cây nhị phân tìm kiếm đấy chứ.
    Cây nhị phân có nghĩa là mỗi node cha có tối đa 2 nút con

Các đề tài tương tự

  1. Check giùm mình đoạn code mảng
    Gửi bởi vinhxuan27 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 12-12-2009, 04:50 PM
  2. Check giùm mình đoạn code chuẩn hóa chuỗi. thanks
    Gửi bởi vinhxuan27 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 12-12-2009, 12:43 AM
  3. Check giùm mình đoạn code về ngày tháng này với! ^^
    Gửi bởi mèo lười trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 4
    Bài viết cuối: 05-11-2008, 06:49 PM
  4. check giùm với được ko?
    Gửi bởi matnai_8387 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 28-12-2007, 03:36 PM
  5. bác nào check giùm em cái bài về xử lý file với
    Gửi bởi comeonbaby trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 27-12-2007, 10:23 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn