数据结构之二叉树基本介绍
说明:总是会忘记二叉树的相关概念在这里记录一下
二叉树:每个节点最多有两个子树的树结构。
根节点:一棵树最上面的节点称为根节点。
父节点、子节点:如果一个节点下面连接多个节点,那么该节点称为父节点,它下面的节点称为子 节点。
叶子节点(树叶):没有任何子节点的节点称为叶子节点。
兄弟节点:具有相同父节点的节点互称为兄弟节点。
节点度:节点拥有的子树数。
树的深度:从根节点开始(其深度为0)自顶向下逐层累加的。(从书中看到)
树的高度:从叶子节点开始(其高度为0)自底向上逐层累加的。(从书中看到)
注意:有些说法中 树中结点的最大层次称之为树的深度或者高度
二叉树的类型:
满二叉树(Full Binary Tree):
除最后一层无任何子节点外,每一层上的所有节点都有两个子节点,最后一层都是叶子节点。
- 树深度为h,最大层数为k,深度与最大层数相同,k=h;
- 最后一层的节点(叶子节点)数量是 2的(k-1)次方,第i层的节点数 2的(i-1)次方
- 总结点数:2的k次方-1
完全二叉树(Complete Binary Tree)
若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树
- 只允许最后一层有空缺结点且空缺在右边,即叶子节点只能在层次最大的两层上出现;
- 满二叉树是特殊的完全二叉树
平衡二叉树(Balanced Binary Tree)
又称为AVL树,是一颗空树或左右两个子树的高度差的绝对值不超过 1,并且左右两个子树都是一棵平衡二叉树。
二叉搜索树(Binary Search Tree)
又称二叉查找树、二叉排序树(Binary Sort Tree)。 满足以下条件:
- 若左子树不空,则左子树上所有节点的值均小于或等于它的根节点的值;
- 若右子树不空,则右子树上所有节点的值均大于或等于它的根节点的值;
- 左、右子树也分别为二叉排序树
红黑树(Red Black Tree)
满足下列性质:
- 节点是红色或黑色;
- 根节点是黑色;
- 所有叶子节点都是黑色(最后一层的节点的值可以是null);
- 每个红色节点必须有两个黑色的子节点。(从每个叶子到根的所有路径上不能有两个连续的红色节点。)
- 从任一节点到其每个叶子的所有简单路径都包含相同数目的黑色节点。
为什么会有红黑树:二叉搜索树极端情况下会变成链表,搜索的时间变多,比如依次插入87654321