您的位置:首页 > 编程语言 > Java开发

二叉排序树相关操作

2015-09-11 18:26 357 查看
二叉排序树定义就是左子树比根小,右子树比根大;

中序遍历出来的书递增的有序序列;

     先说它的查找:类似于二分查找,时间复杂度为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了,然后替换的点本身可能有子节点,再维护一下就好了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 二叉排序树