获取集合、数组后要判断为空的必要性以及根据构造器创建对象后不是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即可 禁止 空 默认 ...
随机推荐
- android 之 java环境部署
上甲骨文公司官网下载最新的jdk http://www.oracle.com/technetwork/cn/java/javase/downloads/jdk8-downloads-2133151-z ...
- SQL 小笔记
如何得到字段的类型 select sql_variant_property(ID,'BaseType') from tb
- XAMPP 的MYSQL无法启动
最近在学习小程序,小程序的后台cms系统需要安装XAMPP软件,这个软件是个集成软件,里面有MySql 和 Apache 等 ,首先进入小程序后台时需要启动MySql 和 Apache Apache ...
- 使用HttpWebRequest方式访问外部接口
第一步,如果不是http网站,则需认证信托证书 /// <summary> /// 认证信托证书 /// </summary> /// <param name=" ...
- shell中$0,$?,$!
变量说明: $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $? 最后运行的命令的结束代码(返回值) $- 使用Set命令设定的Flag一览 ...
- MVC学习笔记--IEnumerable的用法
IEnumerable的用法 IEnumerable和IEnumerable<T>接口在.NET中是非常重要的接口,它允许开发人员定义foreach语句功能的实现 并支持非泛型方法的简单的 ...
- R绘图学习笔记
R软件作图学习,首先为了体验方便,我使用的R中MASS包中的自带数据集,首先加载该包 > library(MASS) 加载数据集,该数据集事保险数据统计 > data("Insu ...
- hadoop参数配置
Hadoop参数汇总 linux参数 JVM参数 Hadoop参数大全 core-default.xml hdfs-default.xml yarn-default.xml Hadoop参数汇总 @( ...
- linux搭建phantomjs+webdriver+testng+ant自动化工程
因为项目的原因,需要将脚本在linux环境无浏览器化去跑,那么原有的在windows系统下有浏览器化的自动化脚本场景就不适用了,这里给出linux系统下搭建phantomjs+webdriver+te ...
- Apache Http Server和Tomcat 之区别
转自:Apache Http Server和Tomcat 之区别 Apache官方网站:http://www.apache.org/Tomcat官方网站:http://tomcat.apache.or ...