二叉排序树和平衡二叉树

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zx2015216856/article/details/82556867

一、二叉排序树

  1、定义:二叉排序树(BST)也称二叉查找树。是一棵空树或具有以下性质的树:

     (1)若左子树非空,则左子树上所有结点关键字值均小于根结点的关键字值

     (2)若右子树非空,则右子树上所有结点关键字值均大于根结点的关键字值

     (3)左、右子树本身也分别是一棵二叉排序树

   由此定义可知,二叉排序树是一个递归的数据结构,有左子树结点值<根结点值<右子树结点值。所以,对二叉排序树进行中序遍历,可以得到一个递增的有序序列。

 如图:一颗二叉排序树,中序遍历序列为:123468

2、二叉排序树的插入

   插入节点过程中,若原二叉排序树为空,则直接插入节点;否则,若小于根节点,则插入到左子树中;若大于根节点,则插入到右子树中

3、二叉排序树的删除

   删除操作的实现按3种情况来处理:

   (1)如果被删除的结点z是叶结点,则直接删除,不会破坏二叉排序树的性质

   (2)若结点z只有一棵左子树或右子树,则让z的字数成为z父节点的子树,代替z的位置

   (3)若结点z有左、右两棵子树,则让z的直接后继(或直接前驱)代替z,然后从二叉排序树种山区这个直接后继 (或直接前驱),这样就转换成了第一或第二种情况。

    如图所示:分别删除45、78、78节点

二、平衡二叉树

           1、定义:任意结点的左、右子树高度差的绝对值不超过1,将这样的二叉树称为平衡二叉树,简称平衡树(AVL树)。

                       定义结点左子树与右子树的高度差为该结点的平衡因子,则平衡二叉树节点的平衡因子的值只可能是-1,0,1

猜你喜欢

转载自blog.csdn.net/zx2015216856/article/details/82556867
今日推荐