二叉查找树的查找和排序方法的实现

*来自《算法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阅读 9,929评论 1 31
  • 四、树与二叉树 1. 二叉树的顺序存储结构 二叉树的顺序存储就是用数组存储二叉树。二叉树的每个结点在顺序存储中都有...
    MinoyJet阅读 5,503评论 0 7
  • 最近在闲看博客时看到一篇专门写红黑树的实现原理,以Java的TreeMap为例讲解,写的很不错,仔细看下来发现很多...
    locoder阅读 9,153评论 0 11
  • 姓名: 李小娜 [嵌牛导读] :这篇文章主要介绍了Java二叉排序树,包括二叉排序树的定义、二叉排序树的性质、二叉...
    n184阅读 3,826评论 0 0
  • 众生皆苦 我所有的向往(是前不久刚入坑红米note3.体验并不好。...
    御宅胖猫阅读 4,649评论 0 0