获取集合、数组后要判断为空的必要性以及根据构造器创建对象后不是null的证实
一、树 Tree
二、二叉树 Binary Tree
二叉树遍历原理
二叉树的遍历是指从根节点出发,按照某种次序依次访问二叉树中所有节点,使得每个节点被访问一次且仅被访问一次。
二叉树的遍历方式可以很多,如果我们限制了从左到右的习惯方式,那么主要就分为4中:
1、前序遍历
先访问根节点,然后前序遍历左子树,再前序遍历右子树。
2、中序遍历
从根节点开始(注意不是先访问根节点),中序遍历根节点的左子树,然后访问根节点,最后中序遍历右子树。
三、二叉查找树
二叉查找树,英文binary search tree,简称BST,查找一个节点所需的最大次数等于二叉查找树的高度。
二叉查找树有一个根节点(root),比根节点小的放到根节点的左侧,变成根节点的左子节点(left),大于等于根节点的放到根节点的右侧,变成根节点的右子节点(right)。如此,新元素通过与已有节点不断比较,从而找到自己的位置。
二叉查找树有一个很大的缺陷就是,假如新添加的元素是越来越大的或者越来越小的,则二叉查找树就会侧重一边,这时查找性能严重下降(侧重一边相对于左右平衡,查找元素时会多一倍的性能消耗)。
红黑树,英文red black tree,是一种自平衡的二叉查找树。
红黑树除了符合二叉查找树的基本特性外,还有自己的5个特性:
1、每个节点颜色,要么是黑色,要么是红色
2、根节点是黑色
3、叶子节点是黑色的空节点(nil节点)
4、红色节点的子节点都是黑色
5、对每一个节点来说,从这个节点到其每个叶子节点的所有路径都包含相同数量的黑色节点。
红黑树会通过三种方式对平衡进行修正,变色、左旋、右旋。
如果一个红黑树向右倾斜,就左旋,反之,就右旋。
左旋动图:

右旋动图:

用语言真是不可描述。
多路查找树
多路查找树,其每一个节点的孩子数可以多于两个,且每一个节点处可以存储多个元素。
有4中特殊形式:2-3树、2-3-4树、B树和B+树。
2-3树
获取集合、数组后要判断为空的必要性以及根据构造器创建对象后不是null的证实的更多相关文章
- Java获取一维数组的最小值
编写程序,实现接受用户在文本框中输入的单行数据.这些数据都是整数数字,以空格进行分隔,空格数量不限.并将这些数据分割成一维数组,再从数组中提取最小值显示在界面中.思路是先对用户的输入进行验证,即先用t ...
- ruby pluck用法,可以快速从数据库获取 对象的 指定字段的集合数组
可以快速从数据库获取 对象的 指定字段的集合数组 比如有一个users表,要等到user的id数组: select id from users where age > 20; 要实现在如上sql ...
- 在Map对象中获取属性,注意判断为空
在Map对象中获取属性,注意判断为空 public static void main(String[] args) { Map map = new HashMap(); Integer i = (In ...
- 集合 数组 定义 转换 遍历 Arrays API MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- C# 基础知识系列- 3 集合数组
简单的介绍一下集合,通俗来讲就是用来保管多个数据的方案.比如说我们是一个公司的仓库管理,公司有一堆货物需要管理,有同类的,有不同类的,总而言之就是很多.很乱.我们对照集合的概念对仓库进行管理的话,那么 ...
- java集合-数组ArrayList
1.简介 ArrayList是java集合框架常用的集合类之一,底层是基于数组来实现容量大小动态变化的. 2.类图(JDK 1.8) 下图是ArrayList实现的接口和继承的类关系图: public ...
- java 各种数据类型判断为空
一,基本数据类型 八种基本类型有默认值 http://www.runoob.com/java/java-basic-datatypes.html 二,String 对象 // 判断String为空 / ...
- Visual Studio 2017 - Windows应用程序打包成exe文件(2)- Advanced Installer 关于Newtonsoft.Json,LINQ to JSON的一个小demo mysql循环插入数据、生成随机数及CONCAT函数 .NET记录-获取外网IP以及判断该IP是属于网通还是电信 Guid的生成和数据修整(去除空格和小写字符)
Visual Studio 2017 - Windows应用程序打包成exe文件(2)- Advanced Installer Advanced Installer :Free for 30 da ...
- m_Orchestrate learning system---三十二、数据库字段判断为空时容易出现问题,如何从根本上解决这个问题
m_Orchestrate learning system---三十二.数据库字段判断为空时容易出现问题,如何从根本上解决这个问题 一.总结 一句话总结:字段禁止为空,设置默认值0即可 禁止 空 默认 ...
随机推荐
- Gentoo双网卡同时启用上内外网
引言:本文配置网络通过 OpenRC/netifrc 方法(net.*scritps)配置. 外网网卡:enp3s4 内网网卡:enp2s0 外网地址(通过路由器) IP: 192.168.1.10 ...
- Java 代码性能优化
代码优化,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是, ...
- 子字符查找KMP算法 - 子串自匹配索引表
public static int[] kmpTable(char[] seq) { int[] tbl = new int[seq.length]; tbl[0] = 1; for (int i = ...
- .net 可枚举类型的构建方法
数组可以使用foreach遍历数组,其实只要实现GetEnumertor方法的类型都可以使用foreach结构遍历数组. 首先看下代码: //笔类 public class Pencil { publ ...
- BuildingAndRunningUAFServerUsingMaven
https://github.com/eBay/UAF/wiki/BuildingAndRunningUAFServerUsingMaven(CLIonly) 实现uaf的demo,使用ebay的方案 ...
- 使用Session防止表单重复提交
本文出处:http://www.cnblogs.com/xdp-gacl/p/3859416.html 在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以 ...
- C#字符串常见操作总结
string类常用的方法和总结小记
- ios 软键盘顶起这个页面
html { overflow: hidden; } ;;;; } ;;; } ;; left: 200px; overflow: auto;} 行内的滚动条.
- CentOS6.3添加nginx系统服务详细说明
今天虚拟机上配了下服务器整理了个这个 nginx 服务 要注意 - 短横杠这个符号看看复制进去后有没有乱码,我之前就遇到这个问题,郁闷了好久才发现 提示:顶部的注释不要去除否则无法注册为系统服务, 关 ...
- Android 消息传递之Bundle的使用——实现object对象传输(一)
UI更新--消息处理massage 对于安卓内部消息得处理,实现对界面UI得更新操作,不能在线程中直接更新ui.至于为什么不能,在学习安卓开发的时候,在线程中操作会使程序崩溃. 为什么,可以看看诸多大 ...