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

Đề tài: Nhập xuất cây nhị phân tìm kiếm trong C++

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

    Talking Nhập xuất cây nhị phân tìm kiếm trong C++

    có ai bít viết code để nhập, xuất cây nhị phân tìm kiếm hok! nếu ai biết chỉ em zới nha! thanks ^^!

  2. #2
    Ngày gia nhập
    01 2007
    Nơi ở
    Somewhere I belong
    Bài viết
    168

    Xuất cây nhị phân có 3 kiểu.
    Thứ nhất là duyện theo kiểu Posttrav, Intrav và Pretrav

    Đầu tiên là duyệt theo kiểu PreTrav tức là duyệt cây nhị phân theo thứ tự trước (NLR - Node Left Right)
    Đầu tiên chúng ta thăm nút gốc, sau đó duyệt nhánh cây con bên phải (theo phép duyệt pretrav), cuối cùng duyệt nhánh cây con bên phải (cũng theo phép duyệt pretrav).
    C++ Code:
    1. void Pretrav(Node *proot) // Duyet cay nhi phan theo thu tu truoc (NLR)
    2. {
    3.    f(proot != NULL)
    4.    {
    5.         cout<<proot->key<<"  ";
    6.         Pretrav(proot->left);
    7.         Pretrav(proot->right);
    8.    };
    9. };

    Phép duyệt intrav. Duyệt cây nhị phân theo thứ tự giữa (LNR - Left Node Right)
    Đầu tiên chúng ta duyệt nhánh cây con bên trái (theo phép duyệt intrav) sau đó thăm nút gốc, cuói cùng duyệt nhánh cây con bên phải (cũng theo pép duyệt intrav).
    C++ Code:
    1. void Tree::Intrav(Node *proot)  // Duyet cay nhi phan theo thu tu giua (LNR)
    2. {
    3.    if(proot != NULL)
    4.    {
    5.         Intrav(proot->left);
    6.         cout<<proot->key<<"  ";
    7.         Intrav(proot->right);
    8.    };
    9. };

    Cuối cùng là phép duyệt theo thứ tự sau Posttrav (LRN - Left Right Node)
    Đầu tiên chúng ta duyệt nhánh cây con bên trái (theo phép duyệt posttrav). Sau đó duyệt nhánh cây con bên phải (cũng theo phép duyệt posttrav), cuối cùng là thăm nút gốc.
    C++ Code:
    1. void Tree::Posttrav(Node *proot)   // Duyet cay  nhi phan theo thu tu sau (LRN)
    2. {
    3.    if(proot != NULL)
    4.    {
    5.         Posttrav(proot->left);
    6.        Posttrav(proot->right);
    7.        cout<<proot->key<<"  ";
    8.    };
    9. };

    Còn đây là phép chèn (nhập) vào cây nhị phân không sử dụng đệ quy (tớ chẳng hiểu cái khung hai lớp Node và lớp Binary Tree cậu viết kiểu gì mà cho code cả đại loại là key trong này là dữ liệu của lớp Node, còn rootnode gốc của cây nhị phận tìm kiếm.
    C++ Code:
    1. void Insert(int key_)     // Chen mot gia tri vao cay nhi phan
    2. {
    3.       Node *p = new Node(key_);
    4.       Node *q = root;// root là nút gốc
    5.       if(!root)
    6.       {
    7.          root = p;
    8.          return ;
    9.       }
    10.       while(q)
    11.       {
    12.         if(q->key  == key_)
    13.          {
    14.             cout<<"khong chen duoc:";
    15.             return ;
    16.          }
    17.          else
    18.          {
    19.             if(q->key > key_)
    20.             {
    21.                 if(!q->left)// neu cay con trai ma rong  thi chen` luon vao do
    22.                 {
    23.                     q->left = p;
    24.                         return ;
    25.                 }
    26.                else
    27.                q = q->left;// di tiep sang cay con trai
    28.             }
    29.             if(q->key < key_)
    30.             {
    31.                 if(!q->right)// neu cay con fai ma rong  thi chen` luon vao do
    32.                {
    33.                    q->right = p;
    34.                    return ;
    35.                }
    36.                else
    37.                  q = q->right;// di tiep sang cay con fai
    38.             }
    39.          }
    40.       }
    41. };

  3. #3
    Ngày gia nhập
    03 2008
    Bài viết
    4

    ui ui! thanks bạn nhìu nhìu ^^! làm tiếp cái project đây! hihi ^^!

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

  1. Lập trình C++ Mình muốn hỏi về bài toán tìm số lần xuất hiện của ký tự nhiều nhất trong chuỗi và số lần xuất hiện
    Gửi bởi ducky trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 06-09-2013, 11:17 AM
  2. Lập trình C Xuất nhập file trong C kết quả xuất ra không đúng?
    Gửi bởi lamhoang100 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 5
    Bài viết cuối: 05-06-2013, 05:38 PM
  3. Trả lời: 0
    Bài viết cuối: 04-05-2012, 10:58 PM
  4. Bài tập C Tìm các từ xuất hiện nhiều nhất trong câu với OOP, làm thế nào hay nhất?
    Gửi bởi j3amboo trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 0
    Bài viết cuối: 14-10-2011, 08:19 PM
  5. Hỏi về tìm kiếm trong cấu trúc đã nhập
    Gửi bởi baquang1984 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 20-03-2010, 08:09 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