数据结构 之二叉树


遍历

        遍历二叉树,有三种遍历方式:

                前序      中序(最常用)       后序

        前序 中序 后序 遍历的步骤是相同  只是顺序不同

前序遍历顺序

       先输出当前节点      在遍历左节点    在遍历右节点

 中序遍历顺序

        先遍历左节点        在输出当前节点    在遍历右节点

后序遍历顺序

         先便利左节点       在遍历右节点     在输出当前节点

   可以看出所谓的前中后序 是是输出当前节点数的顺序    前序第一个输出当前节点      中序第二个   后续最后一个

   又因为中序是按照数值大小顺序来的  所以中序最常见 

二叉树效率:

       二叉树和数组与链表对比    在有100w的数据项的无序数组和链表对比 查 插入  删除都最少50w次的改动 比较

 在100万数据的树上只需要20次的比较  再加上很少的时间去连接数据项

       所以树所有的常用数据存储操作都有很高的数据效率

      遍历不如其他操作快  但是遍历在大型数据库中不是常用操作

 如果二叉树是平衡的  效率为:O(logN),如果是不平衡的  (最极端的情况,存入树中的数据是升序或降序排列的,那么二叉树就是链表),效率为: O(N)     所以二叉树在随机保存数值的情况下效率最高

缺点:

            如果二叉树是极端不平衡的(此时的二叉树就是一个链表),它的效率为O(N),即使数值是随机的,如果数据的量够大,也有可能有一部分的数值是有序的(就像你抛硬币的时间足够长,会有一段时间出现一直抛正面或反面),造成二叉树会变成是局部不平衡的,这样它的效率会介于O(logN)到O(N).