二叉排序樹相關操作

二叉排序樹定義就是左子樹比根小,右子樹比根大;

中序遍歷出來的書遞增的有序序列;

     先說它的查找:類似於二分查找,時間複雜度爲logN,這個很好理解吧,就是拿你要找的數從根比,大的話走右面,小的話走左面,每次減少一半;

     再說它的插入:只要這個節點不是最底層的節點(就是這個節點下面沒有其他節點了),就跟它比較如果小於就往左走,如果大於就往有走,走到空時插入;

java實現:class tree{

                      int   data;

                      tree  lchild;

                      tree  rchild;

                 }

       public   void    insert(tree  t,int   data)

        {

                 if(t == null)

                   {

                         tree t1 = new tree();

                         t1.data = data;

                         t = t1;

                   }

                 else if(t.data > data)

                  {

                          insert(t.lchild,data);

                  }

                 else if(t.data < data)

                  {

                          insert(rchild,data);

                  }

         }

      再說這個樹的創建:有了插入就很好創建了,就不寫了;

      再說刪除:分爲幾種情況:

               1.這種沒有子節點,直接刪除

               2.這種有一個節點,或左或右,刪除之後直接補上就ok

               3.這種是左右節點都有:有兩種方法(反正我就知道兩種。。。),但有一種會增加樹的高度,所以就不說了,用的也比較少,就說另一種,你要刪除那個節點,你就找那個節點下面的樹,找到它左子樹中最大的點或者右子樹中最小的點,把這個點替換成要刪除的點,就ok了,然後替換的點本身可能有子節點,再維護一下就好了




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章