概念数据结构
树:是一种数据结构,它是由n(n>=1)个有限节点组成一个具备层次关系的集合。spa
二叉树:是一种特殊的树。blog
结点的度:结点拥有的子树个数扩展
叶结点(叶):度为0的结点,即没有儿子的结点二叉树
分支结点:度不为0的结点搜索
兄弟结点:具备相同父亲的结点遍历
树的度:树中最大的结点度im
结点的层次:根为第一层,依次类推d3
深度:树中节点的最大层次数据
高度:从下往上数层数
若是根结点第0,层数=深度=高度-1
若是根结点第1,层数=深度=高度
特色
一、每一个结点最多有两颗子树,结点的度最大为2。
二、左子树和右子树是有顺序的,次序不能颠倒。
三、即便某结点只有一个子树,也要区分左右子树。
类型
满二叉树:顾名思义,布满结点的树,从高到低,除了叶节点外,每个结点都有左右子叶,且叶子结点都处在最底层的二叉树。
彻底二叉树:比满二叉树少几个叶节点,除最底层外,其它各层结点数都达到最大个数,底层的叶子结点都是从左到右依次排布。
平衡二叉树(AVL树):空树或者它的左右两个子树的高度差的绝对值不超过1,而且左右两个子树也都是平衡树。
二叉搜索树:空树或者二叉树的全部节点比他的左子节点大,比他的右子节点小。(左<=根<=右)
红黑树:不只是具备二叉搜索树的属性,还具备平衡树的属性,有序且子树差不超过1,颜色规则:结点要么红要么黑,上下层结点红黑交替,根节点和特殊节点(即叶节点下面两个虚无的节点)是黑的,红节点的左右子节点是黑的,最重要的是从任一节点到其每一个叶子节点的全部路径都包含相同数目的黑色节点。
遍历方式
深度遍历:前中后序三种
前序遍历:根结点->左子树->右子树
中序遍历:左子树->根结点->右子树
后序遍历:左子树->根结点->根节点
广度遍历:
层次遍历:按层,从上到下,从左到右遍历。
扩展
红黑树插入结点问题
通常默认插入节点是红色的。
若插入之后树不符合颜色规则,则须要进行颜色调整。
若插入之后树已经不是一个平衡的二叉树,则须要进行结构调整。
结构调整过程包含两个基本操做:左旋(Rotate Left),右旋(RotateRight)。