【数据结构】树

一、二叉树

1、满二叉树

      任何一个非叶子节点,孩子都是全的,属于完全二叉树。

    (除最后一层无任何子节点外,每一层上的所有结点都有两个子结点二叉树。)

2、完全二叉树(堆就是完全二叉树)

      若设二叉树的深度为h。

      除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数;

      第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。

3、平衡二叉树

      也叫平衡二叉搜索树。

      它是一棵空树它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树

4、搜索二叉树

      二叉查找树(Binary Search Tree),(又叫:二叉搜索树,二叉排序树)

      它是一棵空树,或者具有下列性质:

      若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;

      若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;

      它的左、右子树也分别为二叉排序树

      

总结:(参考https://blog.csdn.net/beautiful_face/article/details/69942116

下面总结一下数组、二分查找、链表、二叉查找树、哈希表、AVL树、红黑树的特点;

1、数组:

      数组的下标寻址十分迅速,但计算机的内存是有限的,故数组的长度也是有限的,实际应用当中的数据往往十分庞大。而且无序数组的查找最坏情况需要遍历整个数组

2、二分查找:

       二分查找要求数组的构造一定有序。二分法查找解决了普通数组查找复杂度过高的问题

任何一种数组无法解决的问题就是插入、删除操作比较复杂,因此,在一个增删查改比较频繁的数据结构中,数组不会被优先考虑

3、链表

        普通链表由于它的结构特点被证明根本不适合进行查找

4、二叉查找树:

       二叉查找树因为可能退化成链表,同样不适合进行查找

5、哈希表:

       哈希表是数组和链表的折中,,同时它的设计依赖散列函数的设计,数组不能无限长、链表也不适合查找,所以也适合大规模的查找

6、AVL树的旋转过程非常麻烦,因此插入和删除很慢,也就是构建AVL树比较麻烦

7、红黑树是平衡二叉树和AVL树的折中,因此是比较合适的。集合类中的Map、关联数组具有较高的查询效率,它们的底层实现就是红黑树
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值