认识二叉树

#第一篇博客文章,因为现在放寒假,没事干,刚好复习一下二叉树,看看两年半的我能够怎么样水文章,琼楼,首战#

二叉树

二叉树,顾名思义,就是两个叉的树,类似于下图所述,那么如果是三个或者多个,那这样还是二

叉树吗?显然不是,二叉树最多是只有两个树枝的。

          j

在数据结构中,树都是倒的,把分叉的点叫做结点,接下来是比较精简的描述。

二叉树的基本概念

二叉树是一种特殊的树形数据结构,其中每个节点最多有两个子节点,通常称为左子节点和右子节点。以下是二叉树的一些基本概念:

  • 节点(Node):二叉树中的基本单元,包含数据和指向左右子节点的指针。

  • 根节点(Root):二叉树的最顶层节点。

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

  • 深度(Depth):从根节点到某个节点的边数。

  • 高度(Height):从某个节点到最远叶子节点的边数。

  • 满二叉树(Full Binary Tree):每个节点要么有两个子节点,要么没有子节点。

  • 完全二叉树(Complete Binary Tree):从左到右填满的二叉树,最后一层可能不完全填满。

  • 平衡二叉树(Balanced Binary Tree):左右子树高度差不超过1的二叉树。

满二叉树

完全二叉树

平衡二叉树

这是平衡的,因为高度差为1

上图就是不平衡的,高度为二,注意的事,平衡二叉树不必满足完全二叉树的条件。


 二叉树的遍历

二叉树的遍历是学习二叉树的重要内容之一,常见的遍历方式有:

  • 前序遍历(Pre-order Traversal):访问根节点 -> 遍历左子树 -> 遍历右子树。

  • 中序遍历(In-order Traversal):遍历左子树 -> 访问根节点 -> 遍历右子树。

  • 后序遍历(Post-order Traversal):遍历左子树 -> 遍历右子树 -> 访问根节点。

  • 层序遍历(Level-order Traversal):按层次从上到下、从左到右遍历。

以一个完全二叉树为例

前序遍历(Pre-order Traversal)

A->B->D->E->C->F->G

中序遍历(In-order Traversal)

D->B->E->A->F->C->G

后序遍历(Post-order Traversal)

D->E->B->F->G->C->A

层序遍历(Level-order Traversal)

A->B->C->D->E->F->G

 二叉树的实现

二叉树可以通过递归或非递归的方式实现。以下我主要讲的时递归的方法实现二叉树。

1)准备工作

2)创建孩子节点

3)创建二叉树

4)销毁二叉树

以上就是基本的递归实现方法,代码可能有些冗余,但基本都是参考书上的。

 二叉树的应用

二叉树在计算机科学中有广泛的应用,包括但不限于:

  • 二叉搜索树(Binary Search Tree, BST):一种有序的二叉树,左子树上的所有节点值小于根节点值,右子树上的所有节点值大于根节点值。

  • 平衡二叉树(如 AVL 树、红黑树):用于实现高效的查找、插入和删除操作。

  • 堆(Heap):一种特殊的完全二叉树,用于实现优先队列。

  • 表达式树:用于表示和求解算术表达式。

  • Huffman 编码树:用于数据压缩。

总结

        以上技能都是值得去学习的,后续我可能会继续更新其他关于二叉树的一些相关知识,加油,小伙伴们,熟能生巧,期待明年的我是如何,你们呢?

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值