滿二叉樹的三種周遊方法之算法

二叉樹的三種周遊,先序,中序,後序。算法

這裏給出徹底二叉樹的三種方法,其餘二叉樹大體思想也差很少。設計

遞歸方法就不用說了,一共幾行代碼。有難度的是非遞歸算法。blog

先序線序遍歷就是說最早輸出的是根節點,而後是左右孩子節點。遞歸

如圖所示,則輸出順序爲  0  1 3 7 8 4 9 2 5 6二叉樹

算法僞代碼:遍歷

開始:方法

     獲得一棵樹im

      根節點入棧數據

       while(棧非空)img

       {

              節點出棧。

              while(節點非葉子節點)

             {

                       輸出節點

                       右孩子入棧

                        作孩子變爲當前節點

              }

               輸出節點

       }

由於是徹底二叉樹,採用順序存儲相對簡單,因此我判斷是否爲葉子節點,而不是是否爲空

中序算法

開始

  獲得一棵樹

  根節點入棧

   while(棧非空)

    {

            取節點

            while(非葉子節點)

           {

                   節點入棧

                    當前節點變爲作孩子

           }

           輸出當前節點

           while(棧非空)

           {

                     取出節點

                      if(節點有有孩子)

                      {

                               有孩子入棧

                                 break;

                      }

                      else

                                 輸出節點

           }

    }

前兩個遍歷相對簡單,後續遍歷就要複雜一點,須要咱們記錄判斷某個節點是否被輸出過

後續算法

開始

    獲得一棵樹

     根節點入棧

      while(棧非空)

       {

           取節點

           while(非葉子)

           {

                  if(節點左右孩子均未輸出)    //其實只判斷右孩子就行

                   {

                                節點入棧

                                 右孩子入棧

                                  當前節點變爲左孩子

                    }

                    else

                                   break;

            輸出節點

            }

       }

 至於如何記錄節點是否被訪問,能夠用節點座位一個數據構造一個結構體,我直接定義了一系列bool型,由於是順序結構嘛,比較簡單。

關於中序遍歷,再補充一個本身設計的算法,原本是閉門造車,後來上網一查,找到了上面那個更好的算法,我這個算法也須要記錄節點是否被訪問

中序算法:

開始

    獲得一棵樹

     將根節點存入棧

     while(棧非空)

      {

           從棧中取出節點

           while(不是葉子節點)

            {

                   if(左孩子未被輸出)

                   {

                          右孩子入棧

                           該節點入棧

                            當前節點變爲其左孩子

                   }

                   else

                            break;

                    輸出該節點

            }

      }

相關文章
相關標籤/搜索