二叉查找樹的查找和排序方法的實現

*來自《算法4》
定義二叉樹
  public BST extends Comparable<Key , Value>{

              private Node root;///根節點
              privare class Node{
                    private Key key;   //鍵
                    private Value val;//值
                    private Node left,right//指向子樹的鏈接
                    private int N;//以該結點為根的子樹中的結點總數
              private Node(Key key,Value val,int N){
               this.key=key,this.val=val;this.N=N;
             }
           private void put(Key key){}
           private void get(Key key,Value val){}
          }
 
}
二叉查找樹的查找和排序方法的實現
       public Value get(Key key){
           return get(root,key);
           }
       private Value get(Node x,Key key){
    //以x為根結點的子樹中查找并返回key所對應值
    //如何找不到返回null
            if(x==null) return null;
           }
          int cmp=key.compareTo(x.key);
           if(cmp<0){
            return get(x.left,key);
             }
          else if(cmp>0){
            return get(key,x.right);
             }
           else{
                 return x.val;
              }
       public void put(Key key,Value val){
          //查找key,找到則更新它的值,否則為它創建一個新的結點
          root=put(root,key,val);
          }
       private Node put(Node x,Key key,Value val){
               //如果key存在以x為根結點的子樹則更新它的值,否則
                //將以key和val為鍵值對插入到該子樹中
               if(x==null) return new Node(key,val,1);
               int cmp=key.compareTo(x.key);
                     if(cmp<0){
            return put(x.left,key,val);
             }
          else if(cmp>0){
            return get(key,x.right,val);
             }
           else x.val=val;
            x.N=size(x.left+1)+size(x.right+1)+1;
             return x;
          }
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 樹的概述 樹是一種非常常用的數據結構,樹與前面介紹的線性表,棧,隊列等線性結構不同,樹是一種非線性結構 1.樹的定...
    Jack921閱讀 4,484評論 1 31
  • 四、樹與二叉樹 1. 二叉樹的順序存儲結構 二叉樹的順序存儲就是用數組存儲二叉樹。二叉樹的每個結點在順序存儲中都有...
    MinoyJet閱讀 1,585評論 0 7
  • 最近在閑看博客時看到一篇專門寫紅黑樹的實現原理,以Java的TreeMap為例講解,寫的很不錯,仔細看下來發現很多...
    locoder閱讀 3,805評論 0 11
  • 姓名: 李小娜 [嵌牛導讀] :這篇文章主要介紹了Java二叉排序樹,包括二叉排序樹的定義、二叉排序樹的性質、二叉...
    n184閱讀 641評論 0 0
  • 眾生皆苦 我所有的向往(是前不久剛入坑紅米note3.體驗并不好。...
    御宅胖貓閱讀 1,053評論 0 0