二叉树 (Binary Tree)
定义:
二叉树是一种层次结构,其中每个节点最多有两个子节点,通常称为左子节点和右子节点。
基本概念:
-
根节点 (Root):二叉树的顶部节点。
-
父节点 (Parent):一个节点直接连接到其子节点的节点。
-
子节点 (Child):由其父节点指向的节点。
-
叶节点 (Leaf):没有子节点的节点。
-
高度 (Height):从根节点到叶节点的最长路径的长度。
-
深度 (Depth):从根节点到特定节点的唯一路径的长度。
类型:
-
完全二叉树 (Complete Binary Tree):除了最后一层外,每一层的节点都被完全填充,且所有节点都向左靠拢。
-
满二叉树 (Full Binary Tree):每个节点都有0或2个子节点。
-
平衡二叉树 (Balanced Binary Tree):左右子树的高度差不超过1。
遍历方式:
-
前序遍历 (Pre-order Traversal):先访问根节点,然后递归地前序遍历左子树和右子树。
-
中序遍历 (In-order Traversal):先递归地中序遍历左子树,然后访问根节点,最后中序遍历右子树。对于二叉搜索树,中序遍历的结果是有序的。
-
后序遍历 (Post-order Traversal):先递归地后序遍历左子树和右子树,然后访问根节点。
-
层序遍历 (Level-order Traversal):按层级从上到下、从左到右地遍历二叉树。
常见应用:
-
二叉搜索树 (Binary Search Tree, BST):一种特殊的二叉树,其中左子树的所有节点都小于根节点,右子树的所有节点都大于根节点。这使得在BST中进行搜索、插入和删除等操作非常高效。
-
堆 (Heap):一种特殊的二叉树,常用于实现优先队列。
-
表达式树 (Expression Tree):表示算术表达式的二叉树。
优缺点:
优点:
-
提供了一种结构化的数据组织方式,适用于各种搜索、排序和管理任务。
-
适合于动态插入和删除操作。
缺点:
-
与数组相比,随机访问效率较低。
-
需要额外的空间存储指针。
总结: