zoukankan      html  css  js  c++  java
  • 二叉排序树

    
    
      1 package com.asus.comm;
      2 
      3 public class Tree {
      4     public class node{
      5         public node left;
      6         public node right;
      7         public int value;
      8         public node(int data){
      9             this.value=data;
     10         }
     11         
     12         public String toString() {
     13             System.out.println(String.valueOf(value));
     14             return String.valueOf(value);
     15         }    
     16     }
     17     
     18     public node root;
     19     
     20     public Tree(){
     21         
     22     }
     23     
     24     public void add(int data){
     25         if (root==null){
     26             root=new node(data);
     27         }
     28         else{
     29             add(root,data);            
     30         }
     31     }
     32     
     33     public void add(node n,int data){
     34         if (data<n.value){
     35             if (n.left==null){
     36                 n.left=new node(data);
     37                 return;
     38             }
     39             add(n.left,data);    
     40         }else{
     41             if (n.right==null){
     42                 n.right=new node(data);
     43                 return;
     44             }
     45             add(n.right,data);
     46         }
     47     }
     48     
     49     public void InOrder(node n){
     50         if (n!=null){
     51             InOrder(n.left);
     52             n.toString();
     53             InOrder(n.right);
     54         }
     55     }
     56     
     57     public node findnode(int data){
     58         node ret=null;
     59         if (root!=null){
     60             node cur=root;
     61             while(true){
     62                 if (cur.value==data){
     63                     ret=cur;
     64                     break;
     65                 }        
     66                 if (cur.value>data){
     67                     cur=cur.left;
     68                 }else{
     69                     cur=cur.right;
     70                 }
     71                 if (cur==null){
     72                     break;
     73                 }
     74             }
     75         }
     76         return ret;            
     77     }
     78     
     79     public node findparent(int data){
     80         node ret=null;
     81         if (root!=null){
     82             node cur=root;
     83             node parent=root;
     84             while(true){        
     85                 if (cur.value==data){
     86                     ret=parent;
     87                     break;
     88                 }        
     89                 if (cur.value>data){
     90                     parent=cur;
     91                     cur=cur.left;                    
     92                 }else{
     93                     parent=cur;
     94                     cur=cur.right;                    
     95                 }
     96                 if (cur==null){
     97                     break;
     98                 } 
     99             }
    100         }
    101         return ret;
    102     }
    103     
    104     public void del(int data){
    105 
    106 
    107         node cur=findnode(data);
    108         node parent=findparent(data);
    109         if (cur!=null){
    110             if (cur.left==null && cur.right==null){
    111                 if (cur==parent){
    112                     root=null;
    113                 }
    114                 
    115                 if (data>parent.value){
    116                     parent.right=null;
    117                 }else{
    118                     parent.left=null;
    119                 }
    120             }
    121             
    122             
    123             if (cur.left==null && cur.right!=null){
    124                 if (data>parent.value){
    125                     parent.right=cur.right;
    126                 }else{
    127                     parent.left=cur.right;
    128                 }
    129             }
    130             
    131             
    132             if (cur.left!=null && cur.right==null){
    133                 if (data>parent.value){
    134                     parent.right=cur.left;
    135                 }else{
    136                     parent.left=cur.left;
    137                 }
    138             }
    139             
    140              if (cur.left!=null && cur.right!=null){
    141                 if (data>parent.value){
    142                      parent.right=delnode2(cur);        
    143                 }else if (data<parent.value){
    144                      parent.left=delnode(cur); ;    
    145                 }else{
    146                     root=delnode(cur); ;
    147                 }
    148                 
    149              }     
    150         }
    151         
    152         
    153     }
    154     private node delnode(node cur1){
    155         node temp=null;
    156         node tempP=null;
    157         tempP=cur1;
    158         temp=cur1.right;
    159         while(temp.right!=null){
    160             tempP=temp;
    161             temp=temp.right;
    162         }
    163         tempP.right=null;
    164         temp.right=cur1.right;
    165         temp.left=cur1.left;
    166         return temp;       
    167     }
    168     
    169     private node delnode2(node cur1){
    170         node temp=null;
    171         node tempP=null;
    172         tempP=cur1;
    173         temp=cur1.right;
    174         while(temp.left!=null){
    175             tempP=temp;
    176             temp=temp.left;
    177         }
    178         tempP.left=null;
    179         temp.right=cur1.right;
    180         temp.left=cur1.left;
    181         return temp;       
    182     }
    183 
    184 }
    View Code
    
    
    
     
  • 相关阅读:
    游戏中战斗伤害范围-弹道飞行
    游戏中战斗伤害范围攻击计算完整全版
    更加强健的线程模型,解决线程卡死,退出异常情况
    存在即合理,重复轮子orm java版本
    游戏里12方向,任意方向计算正前方矩形规则
    我是如何设计游戏服务器架构的
    游戏中精灵对象的属性功能设计
    看我是如何处理自定义线程模型---java
    面试和面试者如何保持心态
    谈谈枚举的新用法——java
  • 原文地址:https://www.cnblogs.com/zj1111184556/p/4031369.html
Copyright © 2011-2022 走看看