把4,7,11,10,13,9按顺序插入形成平衡二叉树的高度是几

网易2017实习生招聘笔试题-Java开发工程师
把4,7,11,10,13,9按顺序插入形成平衡二叉树的高度是几
A 3
B 4
C 5
D 6

具体选项忘记了
个人参考答案:高度为3


基础知识点扩展:

满二叉树:

每一层节点数均达最大值

完全二叉树:

除了最外层,其余层上节点数均达最大值,且最外层节点均集中在左侧

二叉排序树又称二叉查找树,亦称二叉搜索树

左子树上的值均小于或等于根结点的值,右子树上的值均大于或等于根结点的值;左、右子树也分别为二叉排序树;

平衡二叉树二叉查排序/查找树(即上面)的一种

是二叉查排序/查找树(即上面)的一种,又叫AVL树。平衡二叉树要求对于每一个节点来说,它的左右子树的高度之差不能超过1

如果插入或者删除一个节点使得高度之差大于1,就要进行节点之间的旋转,将二叉树重新维持在一个平衡状态。
这个方案很好的解决了二叉查找树退化成链表的问题,把插入,查找,删除的时间复杂度最好情况和最坏情况都维持在O(logN)。
但是频繁旋转会使插入和删除牺牲掉O(logN)左右的时间,不过相对二叉查找树来说,时间上稳定了很多。

哈弗曼树(最优二叉树)

带权路径长度最短的树

为什么需要定义平衡二叉树
    2
   /  \
 1     3

当上面的树变为下方的情况时,退化为了链表,效率将大大降低,因此需进行旋转操作

    1
      \
       2
        \
         3

旋转操作

这里写图片描述
这里写图片描述
这里写图片描述

举例

这里写图片描述

这里写图片描述


题目解析:

依次插入4,7,11,10,13,9

平衡二叉树为二叉搜索/排序树的一种,插入操作需满足左子节点比根节点小,右子节点比根节点大
当然每个节点左右子树的高度之差不能超过1

依次先插入4,7,11; 4为根节点,7比4大,所以7为4的右节点,11为7的右节点:

    4
     \
      7
       \
        11   

此时不平衡,为“右右”,需单旋转:

    7
   / \
  4   11

继续插入10,比11小,放在11左节点,13比11大放在10的右节点

    7
   / \
  4   11
     /   \
    10   13

继续插入9,比10小,放在10左节点

    7
   / \
  4   11
     /   \
    10   13
   /
  9

此时不平衡,为“右左”,需双旋转:

    7                      10
   / \                    /  \
  4   11        ->       7    11
     /  \               /  \    \
    10   13            4    9    13  
    /
   9
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值