当前位置 : 主页 > 编程语言 > c++ >

Java中排序二叉树的算法

来源:互联网 收集:自由互联 发布时间:2021-07-03
gistfile1.txt public V put(K key,V value) { //先以t保存链表的root节点 Entry t=root; if(t==null) { //将新的key-value创建一个Entry,并将该Entry作为root root=new Entry (key,value,null); //设置该map集合的size为1,代
gistfile1.txt
public V put(K key,V value) {
    //先以t保存链表的root节点
    Entry
 
   t=root;
    if(t==null) {
        //将新的key-value创建一个Entry,并将该Entry作为root
        root=new Entry
  
   (key,value,null); //设置该map集合的size为1,代表包含一个Entry size=1; //记录修改次数为1 modCount++; return null; } int cmp; Entry
   
     parent; Comparator
     cpr=comparator; //如果比较器不为null,即表明采用定制程序 if(cpr!=null) { do { //使用parent上次循环后的t所引用的Entry parent=t; //拿新插入的key和t的key进行比较 cmp=cpr.compare(key,t.key); //如果新插入的key小于t的key,t等于t的左边节点 if(cmp<0) { t=t.left; //如果新插入的key大于t的key,t等于t的右边节点 } else if (cmp>0) { t=t.right; //如果两个key相等,则新value覆盖原有的value,并返回原有的value } else { return t.setValue(value); } } while(t!=null) } else { if(key==null) throw new NullPointerException(); Comparator
     k=(Comparator
    ) key; do { //使用parent上次循环后的t所引用的Entry parent=t; //拿新插入的key和t的key进行比较 cmp=k.compareTo(t.key); //如果新插入的key小于t的key,t等于t的左边节点 if(cmp<0) { t=t.left; //如果新插入的key大于t的key,t等于t的右边节点 } else if (cmp>0) { t=t.right; //如果两个key相等,则新value覆盖原有的value,并返回原有的value } else { return t.setValue(value); } } while(t!=null) } //将新插入的节点作为parent节点的子节点 Entry
    
      e=new Entry
     
      (key,value,parent); if(cmp<0) { parent.left=e; //如果新插入的key大于t的key,t等于t的右边节点 } else if (cmp>0) { parent.right=e; } //修复红黑树 fixAfterInsertion(e); size++; modCount++; return null; }
     
    
   
  
 
网友评论