[Cấu trúc dữ liệu] Cây nhị phân ký tự chuổi

Thảo luận trong 'C/C++' bắt đầu bởi hongoctrien, 12 Tháng mười 2011.

  1. Offline

    hongoctrien

    • Friends

    Số bài viết:
    2.449
    Đã được thích:
    2.464
    Điểm thành tích:
    2.431
    In ra màn hình theo kiểu Tiền tố, trung tố, hậu tố các ký tự kiểu chuỗi.

    Mã:
    #include<stdio.h>
    #include<conio.h>
    typedef char TData;
    typedef struct TTree	{	TData Data;
    							TTree *left;
    							TTree *right;
    						};
    TTree *insert(TData v,TTree *l,TTree *r)
    {	TTree *N;
    	N=new TTree;
    	N->Data=v;
    	N->left=l;
    	N->right=r;
    	return N;
    }
    
    void PreOrder(TTree *T)
    {	TTree *p;
    	p=T;
    	if (p!=NULL)
    	{	printf("%5c",p->Data);
    		PreOrder(p->left);
    		PreOrder(p->right);
    	}
    }
    
    void InOrder(TTree *T)
    {	TTree *p;
    	p=T;
    	if (p!=NULL)
    	{	InOrder(p->left);
    		printf("%5c",p->Data);
    		InOrder(p->right);
    	}
    }
    
    void PosOrder(TTree *T)
    {	TTree *p;
    	p=T;
    	if (p!=NULL)
    	{	PosOrder(p->left);
    		PosOrder(p->right);
    		printf("%5c",p->Data);
    	}
    }
    
    void main()
    {	TTree *T;
    	clrscr();
    	T=NULL;
    	T=insert('B',insert('A',insert('U',NULL,NULL),insert('V',NULL,insert('Z',NULL,NULL))),insert('C',insert('D',NULL,NULL),insert('K',insert('F',NULL,NULL),insert('G',NULL,NULL))));
    	printf("\nTien to  : ");
    	PreOrder(T);	printf("\n");
    	printf("\nTrung to : ");
    	InOrder(T);		printf("\n");
    	printf("\nHau to   : ");
    	PosOrder(T);	printf("\n");
    	getch();
    }
    Ctrl+F9, dinhvinh07, takechij2 người khác thích bài này.
  2. Offline

    takechij

    • Windows 98

    • Try so hard
    Số bài viết:
    386
    Đã được thích:
    165
    Điểm thành tích:
    140
    sao bữa nay môn cấu trúc dữ liệu không dùng đệ quy nữa à, sao ít thấy khóa sau dùng đệ quy nhỉ
  3. Offline

    hongoctrien

    • Friends

    Số bài viết:
    2.449
    Đã được thích:
    2.464
    Điểm thành tích:
    2.431
    Giảng viên vẫn dạy đệ quy, nhưng có lẽ cách này dễ hơn :)
  4. Offline

    trieutulong

    • Thành Viên Mới

    Số bài viết:
    87
    Đã được thích:
    8
    Điểm thành tích:
    0
    trên đây mới chỉ là kí tự
    T=insert('B',insert('A',insert('U',NULL,NULL),insert('V',NULL,insert('Z',NULL,NULL))),insert('C',insert('D',NULL,NULL),insert('K',insert('F',NULL,NULL),insert('G',NULL,NULL))));
    ví dụ: Cần chèn AA, BB, CC thì làm sao?
    đang thắc mắc chưa có lời giải ,

    với lại ai có code bài cây sinh viên cho mình xin
  5. Offline

    takechij

    • Windows 98

    • Try so hard
    Số bài viết:
    386
    Đã được thích:
    165
    Điểm thành tích:
    140
    dùng đệ quy dễ hơn chứ em, lại còn áp dụng được cho nhiều bài toán khác nhau nữa
  6. Offline

    hongoctrien

    • Friends

    Số bài viết:
    2.449
    Đã được thích:
    2.464
    Điểm thành tích:
    2.431
    Kiểu dữ liệu khai báo là kiểu chuổi, nên bạn có thể dùng nhiều ký tự ở đó
    Còn bài Sinh viên, nó đã ra đi cùng cái HDD của mình, giờ bận quá không viết lại được, bạn nào có sẵn gửi lên mọi người tham khảo với nhé
    trieutulong thích bài này.
  7. Offline

    tangvanbinh

    • Đội cứu hộ máy tính

    Số bài viết:
    449
    Đã được thích:
    197
    Điểm thành tích:
    140
    Đệ quy thầy vẫn dạy nhưng thầy lại không khuyến khích dùng....
  8. Offline

    trieutulong

    • Thành Viên Mới

    Số bài viết:
    87
    Đã được thích:
    8
    Điểm thành tích:
    0
    thank Triển nhưng mình đã thử rồi, 1 kí tự thì được còn 2 kí tự trở lên thì chịu

    Nhờ mấy bạn xe giùm sai ở đâu
    Mã:
    #include <stdio.h>
    #include <conio.h>
    #include<string.h>
    typedef int TData;
    typedef struct list{
            TData Data[10];
            list* left;
            list* right;
            };
    typedef list* tree;
    //chen//
    tree chen(TData v,tree l,tree r)
    {tree p;
        p = new list;
        p->Data[10] = v;
        p->left=l;
        p->right =r;
        return p;
    }
    //tien to //
    void tiento(tree T)
    {tree p;
        p=T;
        if(p!=NULL)    {
            printf("\t%s ",p->Data);
            tiento(p->left);
            tiento(p->right);
        }
    }
    //trung to//
    void trungto(tree T)
    {tree p;    p = T;
        if(p!=NULL){
            trungto(p->left);
            printf("\t%s ",p->Data);
            trungto(p->right);
        }
    }
    //hau to //
    void hauto(tree T)
    {tree p;    p = T;
        if(p != NULL){
            hauto(p->left);
            hauto(p->right);
            printf("\t%s ",p->Data);
        }
    }
    
    //ham chinh//
    void main()
    {tree T;
    //    T= chen(5, chen(15, chen(25,NULL,chen(35,NULL, chen(50,NULL, chen(100,NULL,NULL)))),NULL),NULL); //
        T = chen('AA',chen('BB',NULL,chen('CC',chen ('DD',NULL,NULL),chen ('EE',NULL,NULL))),chen('FF',chen ('GG',NULL,NULL),chen ('HH',NULL,NULL)));
        printf("\n============================================================================\n");
        printf("TIEN TO:");
        tiento(T);printf("\n");
        printf("TRUNG TO:");
        trungto(T); printf("\n");
        printf("HAU TO:\t");
        hauto(T); printf("\n");
        printf("\n============================================================================\n");
        getch();

Chia sẻ trang này

Advertising: Linux system admin | nukeviet | nukeviet 4 | Upload ảnh miễn phí