数据结构–二叉树的定义和基本术语
二叉树的基本概念
二叉树是 n ( n ≥ 0 ) n (n\ge0) n(n≥0)个结点的有限集合:
①或者为 空二叉树 \color{red}空二叉树 空二叉树,即n = 0。
②或者由一个 根结点 \color{red}根结点 根结点和两个互不相交的被称为根的 左子树 \color{red}左子树 左子树和 右子树 \color{red}右子树 右子树组成。左子树和右子树又分别是一棵二叉树。
特点:①每个结点至多只有两棵子树②左右子树不能颠倒(二叉树是 有序树 \color{red}有序树 有序树)
注意区别: 度为2的有序树
度为 2 的有序树是二叉树,二叉树不一定是度为 2 的有序树 \color{red}度为2的有序树是二叉树,二叉树不一定是度为2的有序树 度为2的有序树是二叉树,二叉树不一定是度为2的有序树
二叉树是递归定义的数据结构 \color{green}二叉树是递归定义的数据结构 二叉树是递归定义的数据结构
二叉树的五种状态
几个特殊的二叉树
满二叉树 \color{red}满二叉树 满二叉树。一棵高度为h,且含有 2 h − 1 2^h-1 2h−1个结点的二叉树
特点:
①只有最后一层有叶子结点
②不存在度为1的结点
③按层序从1开始编号,结点i的左孩子为2i,右孩子为2i+1;结点i的父节点为 ⌊ i / 2 ⌋ \left\lfloor i/2\right\rfloor ⌊i/2⌋(如果有的话)
完全二叉树 \color{red}完全二叉树 完全二叉树。当且仅当其每个结点都与高度为h的满二叉树中编号为1~n的结点一一对应时,称为完全二叉树
特点:
①只有最后两层可能有叶子结点②最多只有一个度为1的结点
③同上③
④i ≤ ⌊ i / 2 ⌋ \left\lfloor i/2\right\rfloor ⌊i/2⌋为分支结点,i > ⌊ i / 2 ⌋ \left\lfloor i/2\right\rfloor ⌊i/2⌋为叶子结点
几个特殊的二叉树
二叉排序树 \color{red}二叉排序树 二叉排序树。一棵二叉树或者是空二叉树,或者是具有如下性质的二叉树:
左子树 \color{red}左子树 左子树上所有结点的 关键字 \color{red}关键字 关键字均 小于根结点 \color{red}小于根结点 小于根结点的关键字;
右子树 \color{red}右子树 右子树上所有结点的 关键字 \color{red}关键字 关键字均 大于根结点 \color{red}大于根结点 大于根结点的关键字。
左子树和右子树又各是一棵二叉排序树。
二叉排序树可用于元素的排序、搜索 \color{purple}二叉排序树可用于元素的排序、搜索 二叉排序树可用于元素的排序、搜索
平衡二叉树 \color{red}平衡二叉树 平衡二叉树。树上任一结点的 左子树 \color{red}左子树 左子树和 右子树 \color{red}右子树 右子树的 深度之差不超过 1 \color{red}深度之差不超过1 深度之差不超过1。
平衡二叉树能有更高的搜索效率 \color{purple}平衡二叉树能有更高的搜索效率 平衡二叉树能有更高的搜索效率