二叉树的用途-(未完)

二叉树

二叉树是一种重要的数据结构,与数组、向量、链表都是一种顺序容器,它们提供了按位置访问数据的手段。但是有一个缺点,它们都是按照位置来确定数据,想要通过值来获取数据,只能通过遍历的方式。而二叉树在很大程度上解决了这个缺点,二叉树是按值来保存元素,也按值来访问元素。

二叉树由一个个节点组成,一个节点最多只能有两个子节点,从根节点开始左右扩散,分左子节点和右子节点,向下一直分支。

许多实际问题抽象出来的数据结构往往是二叉树的形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。二叉树是递归定义的。

例子:从100亿条记录的文本文件中取出重复数最多的前10条,就是先通过哈希的方式分割成很多小模块,对各个小模块使用二叉树存储数据<value值,count个数>,最后遍历二叉树获取个数最大的前10条,然后在汇总比较。

二叉树的分类

     满二叉树:从高到低,除了叶节点外,所以节点左右节点都存在。

    完全二叉树:比满二叉树少几个叶节点,从左向右放子节点。

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

    二叉搜索树:空树或者二叉树的所有节点比他的左子节点大,比他的右子节点小。

    红黑树:不仅是具有二叉搜索树的属性,还具有平衡树的属性,有序且子树差不超过1,

    红黑树 颜色规则:根节点和特殊节点(即叶节点下面两个虚无的节点和未填写的节点)是黑的,红节点的左右子节点是黑的,最重要的是对于每个节点,从该节点到子孙叶节点的所有路径包含相同数目的黑节点。

二叉查找树/二叉搜索树

定义:空树或者二叉树的所有节点比他的左子节点大,比他的右子节点小

二叉查找树的条件:

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

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

3)左、右子树也分别为二叉排序树

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值