一网打尽二叉树系列

前言

算法是计算机软件的基础,常见算法是软件开发的核心基本功,今年打算深入学习一些算法,记录一些算法理论以及最佳实践,希望可以坚持下去,关注我,我们一起学习,增强我们的基本功。

一、二叉树定义

二叉树是一种数据结构,每个树节点的子节点最大数量是2。

二、二叉树分类

满二叉树: 二叉树上,除了叶子结点的子节点(度)为0,其他节点子节点(度)都是2。

完全二叉树: 二叉树上,除了最下面一层外,每一层的节点都被填满,且最后一层的节点都集中在左侧,也就是最下面一层节点是从左到右连续的。

二叉搜索树:二叉搜索树是每个节点必须比左节点大,比右节点数值小。这样的特性使二叉搜索树是有序的。

二叉搜索树可能出现不平衡的情况,最坏的情况导致二叉树退化为链表

平衡二叉搜索树:由于二叉搜索树会出现不平衡,所以有了平衡二叉树,在平衡二叉树中,任意节点的左子树和右子树的高度差不能超过1

三、二叉树搜索(遍历)方式

二叉树使用场景非常多的就是需要遍历树,从树上查找目标数据,比如Mysql的索引数据结构就是树,查找数据都需要从树中查找。

递归遍历

递归遍历分为前序,中序,后序遍历,怎么理解呢?是指访问父节点的顺序,也是访问当前节点的顺序。比如前序遍历,就是先访问当前节点(父节点),再访问左节点最后访问右节点

前序遍历:遍历顺序分别是父节点,左节点,右节点。

前序遍历遍历结果:9、4、1、7、11

中序遍历:遍历顺序分别是左节点,父节点,右节点。

中序遍历遍历结果:1、4、7、9、11

后序遍历:遍历顺序分别是左节点,右节点,父节点。

后序遍历遍历结果:1、7、4、11、9

  • 非递归遍历

非递归遍历树是使用循环的方式遍历。

总结

本文分析了二叉树各个类型的特点,我们可以快速全面了解二叉树,二叉树在我们技术底层框架使用比较多,比如mysql,了解这些基础知识对于二叉树的深入应用是有帮助的。

关注我,我们一起学习技术干货。

相关推荐
songroom2 分钟前
Rust: 量化策略回测与简易线程池构建(MPMC)
开发语言·后端·rust
派大星爱吃鱼3 分钟前
素数检验方法
算法
绝无仅有14 分钟前
面试日志elk之ES数据查询与数据同步
后端·面试·架构
码农BookSea19 分钟前
用好PowerMock,轻松搞定那些让你头疼的单元测试
后端·单元测试
绝无仅有27 分钟前
大场面试之最终一致性与分布式锁
后端·面试·架构
Greedy Alg33 分钟前
LeetCode 72. 编辑距离(中等)
算法
xinxingrs35 分钟前
贪心算法、动态规划以及相关应用(python)
笔记·python·学习·算法·贪心算法·动态规划
秋邱1 小时前
驾驭数据洪流:Python如何赋能您的数据思维与决策飞跃
jvm·算法·云原生·oracle·eureka·数据分析·推荐算法
侯小啾1 小时前
【23】C语言 左移(<<) 与 右移(>>) 位运算符在处理像素中的应用
c语言·算法·位运算·右移·左移
搂鱼1145141 小时前
(dp 优化)洛谷 P14460 寻雾启示 题解
算法·图论