【数据结构】二叉树

发布于:2024-07-02 ⋅ 阅读:(13) ⋅ 点赞:(0)

目录

一、二叉树介绍

1.1 基本概念

1.2  性质

1.3 类型

二、二叉树操作

2.1 遍历

2.2 插入

2.3 删除

2.4 查找

2.5 构建

2.6 计算高度

2.7 查找最大/最小值

2.8 检查是否为二叉搜索树

2.9 平衡二叉树操作

2.10 其他高级操作

三、二叉树应用场景

四、C语言代码实现

4.1  满二叉树

4.2 完全二叉树

4.3 平衡二叉树

4.4 二叉搜索树


一、二叉树介绍

        二叉树(Binary Tree)是一种特殊的树形数据结构,它的每个节点最多有两个子节点,通常称为左子节点和右子节点。二叉树在计算机科学中有着广泛的应用,特别是在搜索、排序和数据存储等方面。

1.1 基本概念

        节点(Node):二叉树的基本单元,包含一个数据元素和两个链接,分别指向左子节点和右子节点。

        根节点(Root Node):二叉树的起始节点,没有父节点。

        子节点(Child Node):每个节点可以有零个、一个或两个子节点。

        叶子节点(Leaf Node):没有子节点的节点。

        左子树(Left Subtree):根节点的左链接所指向的子树。

        右子树(Right Subtree):根节点的右链接所指向的子树。

1.2  性质

        递归性质:二叉树的定义是递归的,即二叉树的左子树和右子树也都是二叉树。

        空树:特殊的二叉树,没有任何节点。

        深度(Depth):二叉树中节点的最大层次数。

1.3 类型

        满二叉树(Full Binary Tree):除叶子节点外,每个节点都有两个子节点的二叉树。

        完全二叉树(Complete Binary Tree):除最后一层外,每一层上的节点数都达到最大值;在最后一层上只缺少右边的若干节点(即叶子节点都在最右边)。

        平衡二叉树(Balanced Binary Tree):又称AVL树,它的任何节点的两个子树的深度最大差别为1。

        二叉搜索树(Binary Search Tree, BST):任何节点的键值大于其左子树中的任何节点的键值且小于其右子树中的任何节点的键值的二叉树。

二、二叉树操作

        二叉树是一种常见的数据结构,其中每个节点最多有两个子节点,通常被称为左子节点和右子节点。在二叉树操作中,有许多基本的和高级的操作,以下是一些常见的二叉树操作:

2.1 遍历

        前序遍历(Pre-order Traversal):先访问根节点,然后遍历左子树,最后遍历右子树。

        中序遍历(In-order Traversal):先遍历左子树,然后访问根节点,最后遍历右子树。对于二叉搜索树(BST),中序遍历的结果是有序的。

        后序遍历(Post-order Traversal):先遍历左子树,然后遍历右子树,最后访问根节点。

        层次遍历(Level-order Traversal):从上到下,从左到右遍历树的每一层。这通常使用队列来实现。

2.2 插入

        在二叉搜索树(BST)中,插入操作需要保持树的搜索属性。对于新节点,我们比较其值与当前节点的值,并根据比较结果将其插入到左子树或右子树中。

2.3 删除

        在二叉搜索树(BST)中ÿ