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

Đề tài: Duyệt các phần tử bên phải của cây nhị phân

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

    Mặc định Duyệt các phần tử bên phải của cây nhị phân

    Mình gặp vấn đề với việc duyệt và hiển thị , chỉ các phần tử của cây con bên phải của cây nhị phân dưới đây :

    Code:
                
                                                             15
                                                         /         \
                                                      30           8
                                                     /            /   \
                                                  40            6       7
                                                /
                                              15
    đây là code đệ quy duyệt theo tiền thứ tự để hiển thị toàn bộ các phần tử của cây khung , mình vẫn chưa tìm ra cách để chỉ hiển thị ra các phần tử của cây con bên phải thôi
    Mong mấy bạn giúp mình nha !!!! tks mọi người

    Code:
    void NLRdequy(node *&ptree)
    {
    	if(ptree==NULL) return;
    	hienthi(ptree->data);
    	NLRdequy(ptree->left);
    	NLRdequy(ptree->right);
    }

  2. #2
    Ngày gia nhập
    10 2011
    Bài viết
    552

    Bạn muốn chỉ hiển thị cái đống bên phải (CỦA RỎOT ) . Thì bạn lấy cái tay, bạn che ROOT và che cái nhánh trái của nó.
    Còn lại mỗi nhánh phải. Và xem cái nút đầu tiên của nó là ROOT, ta cho duyệt trên đó thôi
    Ap dụng việc duyệt với ĐỐI SỐ ĐẦU TIÊN của hàm duyệt là NLRdequy(ptree->right)

    Còn muốn chỉ chạy 1 dãy bên phải thôi thì cứ xem nó như 1 DSLK đơn. chạy phải lúc nào null thì thôi
    Um Mani Padme Hum...!!

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

    bạn ơi , do cây bên phải nút 8 kiểm soát cả 2 nhánh trái và phải , 6 và 7 . Mình vẫn không hiểu duyệt sao để giá tri xuất ra có cả 8 , 6 , 7 . Viết lại hàm :

    Code:
    NLRdequy(ptree->right);
    NLRdequy(ptree->left);
    nếu mình viết vậy nó sẽ duyệt hết bên phải rồi qua trái .....làm sao để dừng việc nó duyệt qua cây con bên trái ?

  4. #4
    Ngày gia nhập
    10 2011
    Bài viết
    552

    Không. Bạn viết hàm duyệt vậy ok rồi.
    Nhưng lúc ở main:
    Lúc gọi hàm bạn truyền vào tham số của hàm là cái nút của nhánh phải trên cây thôi.

    Đã bảo che cái root đi và cái cây bên trái của root đi rồi mà.
    Vẽ ra trên giấy, rồi lấy tay mà che lại. Thì trên giấy chỉ còn mỗi cái cây bên phải. Thì ta duyệt nó thôi.

    Tưởng tượng cái vấn đề này đơn giản thôi chứ có gì phức tạp đâu
    Đã được chỉnh sửa lần cuối bởi clchicken : 09-12-2011 lúc 09:23 PM.
    Um Mani Padme Hum...!!

  5. #5
    Ngày gia nhập
    03 2011
    Bài viết
    25

    ohh ohh tks bạn nhiều nha

  6. #6
    Ngày gia nhập
    10 2011
    Bài viết
    552

    Mặc định Duyệt các phần tử bên phải của cây nhị phân

    Có hiểu ko đấy ? Hay là chưa hiểu mà vẫn nói vậy cho xong chuyện ?
    Ko hiểu thì cứ nói ra chứ thank cái gì. Nói cho người ta biết để còn tìm cách mà giải thích cho hiểu chứ
    Um Mani Padme Hum...!!

  7. #7
    Ngày gia nhập
    03 2011
    Bài viết
    25

    ac hiểu mới tks chứ....thay vì mình chọn nút gốc là ptree để duyệt cho cả cây nhị phân thì bây giờ muốn duyệt cây con bên phải thôi thì chọn nút gốc là ptree->right

  8. #8
    Ngày gia nhập
    01 2011
    Nơi ở
    -Mountain-
    Bài viết
    768

    góp một cách duyệt nhé
    C++ Code:
    1. void printPre ()
    2.  
    3.         {
    4.  
    5.             if (getRoot() != NULL)
    6.  
    7.             {
    8.  
    9.                 getRoot()->print ();
    10.  
    11.                 BinaryTreeADT tmp = new binaryTreeADT (getRoot()->getLeft());
    12.  
    13.                 tmp->printPre ();
    14.  
    15.                 tmp = new binaryTreeADT (getRoot()->getRight());
    16.  
    17.                 tmp->printPre ();
    18.  
    19.             }
    20.  
    21.         }
    Cách này của mình là đệ quy cây chứ không đệ quy node . Nếu muốn ứng dụng vào bài của bạn thì
    - Xây dựng void hasRight () để kiểm tra xem có cây con phải hay không ---> nếu có thì print
    - Thay đổi một chút ở hàm trên đó là không in ra cây con trái,
    Hướng dẫn C++: https://www.youtube.com/watch?v=BwLodoQdoY4&list=PL1c9Uxlo-mplJDRGdONNupgo5OCBTyGGn

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

  1. Giúp mình kích danh mục bên trái, nó load url vào khung bên phải
    Gửi bởi jockthree trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 0
    Bài viết cuối: 26-09-2013, 11:50 AM
  2. Trả lời: 6
    Bài viết cuối: 31-07-2013, 07:51 PM
  3. Phần Euler và phần duyệt theo chiều rộng (DFS) chạy sai kết quả?
    Gửi bởi hoangde102 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 09-05-2012, 09:37 AM
  4. Cách thức duyệt tiền tự trên cây khi duyệt từ con trái nhất rồi sang anh em ruột phải?
    Gửi bởi tyrant trong diễn đàn Thắc mắc CTDL & Giải thuật
    Trả lời: 0
    Bài viết cuối: 14-09-2011, 10:53 AM

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