基本概念
在计算机科学中,二叉树是每个节点最多只有两个分支的树结构。通常分支被称作”左子树“和”右子树“。
二叉树的分支具有左右次序,不能颠倒。
二叉树的第i层至多拥有2^(i-1)个节点数;深度为k的二叉树至多总共有2(k+1)-1个节点数(定义根节点所在深度k0=0),而总计拥有节点数匹配的,称为”满二叉树“;
深度为k有n个节点的二叉树,当且仅当其中的每一个节点,都可以和同样深度为k的满二叉树,序号为1到n的节点一对一对应时,称为”完全二叉树“。
对任何一颗非空的二叉树T,如果其叶片(终端节点)数为n0,分支度为2的节点数为n2,则n0=n2+1;
与普通树不同,普通树的节点个数至少为1,而二叉树的节点个数可以为0;
普通树节点的最大分支度没有限制,而二叉树节点的最大分支度为2;
普通树的节点无左、右次序之分,而二叉树的节点有左、右次序之分。
应用
二叉树通常作为数据结构应用,典型应用法是对节点定义一个标记函数,将一些值与每个节点相关系。这样标记的二叉树就可以实现二叉查找树和二元堆积,并应用于高效率的搜索和排序。
二叉树的类型
遍历二叉树
我们知道二叉树的根的子树也是二叉树。在遍历的时候使用二叉树的递归性质是很自然的。要访问二叉树的所有节点,必须:
- 访问根
- 访问根节点的所有左子树的节点
- 访问根节点的所有右子树的节点
根据访问根节点的顺序是在访问两个子树之前,中间或后面定义了三种基本的遍历顺序。
前序遍历
先访问根节点,然后访问左子树,最后访问右子树。
第一次访问根之后,访问根节点的左子树。因为这个子树是二叉树,用前序遍历访问它的节点表示我们要先访问它的根,再访问它的左子树。继续用这种递归模式遍历直到所有节点都被访问。
中序遍历
先访问根的左子树所有节点,然后访问根,最后访问根的右子树所有节点。递归访问左字树的节点导致最左边的叶子最先被访问。然后访问叶子的父节点和父节点的右孩子。在访问完根节点左字树的所有节点后访问根。最后用递归的方式访问根的右子树。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。