二叉树(Binary tree)是一种 树形数据结构,其中每个节点最多有两个子节点,通常称为左子节点和右子节点。这种结构可以用于实现多种算法和数据结构,如二叉搜索树、堆、表达式树等。
节点与边:
二叉树的每个节点由数据元素和两个指向其子节点的链接(通常称为左链接和右链接)组成。
根节点:
树的最上层节点称为根节点。
叶子节点:
没有子节点的节点称为叶子节点。
内部节点:
至少有一个子节点的节点称为内部节点。
度:
一个节点的度是指它拥有的子节点数量。在二叉树中,每个节点的度最多为2。
二叉树的形式:
二叉树可以是空集,或者由一个根节点和两棵互不相交的子树(左子树和右子树)组成,这两棵子树也分别为二叉树。
应用:
二叉树在计算机科学中有广泛应用,如二叉查找树用于高效查找数据,二叉堆用于实现优先队列等。
二叉树有多种类型,包括但不限于:
满二叉树:所有节点都有两个子节点,且所有叶子节点都在同一层上。
完全二叉树:除了最后一层外,其他层的节点都是满的,并且最后一层的节点都靠左排列。
二叉搜索树(BST):左子树中所有节点的值均小于根节点的值,右子树中所有节点的值均大于根节点的值。
二叉树的递归定义是:一个二叉树是一棵空树,或者是一棵由一个根节点和两棵互不相交的、分别称作根的左子树和右子树组成的非空树,而左子树和右子树也都是二叉树。
这种结构简单且强大,适用于许多算法和实际应用。