在
计算机科学
中,
二叉树
是每个节点最多有两个
子树
的
树结构
。通常子树被称作“左子树”(
left subtree
)和“右子树”(
right subtree
)。二叉树常被用于实现
二叉查找树
和
二叉堆
。
树和二叉树的三个主要差别:
- 树的结点个数至少为1,而二叉树的结点个数可以为0;
- 树中结点的最大度数没有限制,而二叉树结点的最大度数为2;
- 树的结点无左、右之分,而二叉树的结点有左、右之分。
<完全二叉树和满二叉树>
- 满二叉树:一棵深度为k,且有个节点成为满二叉树
- 完全二叉树:深度为k,有n个节点的二叉树,当且仅当其每一个节点都与深度为k的满二叉树中序号为1至n的节点对应时,称之为完全二叉树
前(先)序、中序、后序遍历
遍历二叉树:L、D、R分别表示遍历左子树、访问根结点和遍历右子树,则先(根)序遍历二叉树的顺序是
DLR
,中(根)序遍历二叉树的顺序是
LDR
,后(根)序遍历二叉树的顺序是
LRD
。还有按层遍历二叉树。这些方法的时间复杂度都是O(n),n为结点个数。