树刷题题后感——相对来说概念和公式数量可以和数论比较

news/2024/9/23 11:23:03

  在刷题的时候因为概念太多了越刷越懵所以先整理一下。

  题目来源:牛客网专项练习牛客网专项练习_校招题库练习题_行测题库考点考题 (nowcoder.com)

  

  树:

    参考链接:如何理解数据结构中树的度(树的度是什么意思)?-CSDN博客  

 

     (他这里打的“节点数“是指节点,,意思就是上图表示的,但是我节点和结点是混淆的,我看到也有人混淆用了(目移))

关于树、森林、二叉树之间的转换:二叉树与树、森林之间的转换_二叉树转化为森林-CSDN博客 规则是对的,只是该链接作者图有的配错了。

 (来自牛客网用户NII)

 

 
    逻辑结构是数据元素之间的关系,存储结构是数据元素及其关系在计算机中的存储方式。
    存储结构有顺序、链式、索引、散列四种,逻辑结构有线性和非线性结构。
    二叉树是逻辑结构,树属于逻辑结构中的非线性结构。
    双向链表、哈希表、循环队列都是存储结构分别属于链式、散列和顺序。逻辑结构是数据元素之间的关系,存储结构是数据元素及其关系在计算机中的存储方式。
    存储结构有顺序、链式、索引、散列四种,逻辑结构有线性和非线性结构。
    二叉树是逻辑结构,树属于逻辑结构中的非线性结构。
    双向链表、哈希表、循环队列都是存储结构分别属于链式、散列和顺序。
    树只是表现数据的层次关系,不是一种存储结构,通常使用链表来存储树结构
 
 

  二叉树:

    二叉树的基本性质:对于任何一棵二叉树,如果叶子结点个数为N0,度为2的结点个数为N2,则必然存在关系N0 = N2+1。

    二叉树共有N个节点,求叶子节点数?N为偶数,叶子节点为N/2;N为奇数,叶子节点为N/2+1

    关于非空二叉树中“n=n0+n1+n2=2*n2+n1+1=总度数+1“那些事-CSDN博客
    上面的链接讲到了几个公式: n = n0+n1+n2 = 总度数+1 = 2n2+n1+1,总度树是所有结点度数之和。
    n表示树的结点个数,n0表示度为0的结点的个数,n1表示度为1的结点的个数,n2表示度为2的结点的个数。
 

  树的遍历顺序:

    参考链接:前序、中序、后续遍历二叉树 - 知乎 (zhihu.com)

    前序遍历:根左右。

    中序遍历:左根右。

    后序遍历:左右根。

    (记忆捷径是将“根”一直向右边挤,根左右,左根右,左右根)

    相关图片我就不放了,对我来说只有这个顺序值得记。

  平衡二叉树:

    参考链接:平衡二叉树(AVL)插入结点后的再平衡思路_avl树再平衡的方法-CSDN博客  

    简而言之,平衡二叉树是二叉搜索树的一个特例,节点的平衡因子是左右子树的高度差,所有节点的平衡因子均小于等于1则这颗树就是平衡二叉树。被破坏平衡的节点最近也是插入节点的爷爷结点。不可能找到插入节点使得父结点不平衡的情况。当插入了节点导致不平衡后可以通过节点的旋转使得树再平衡。二叉搜索树中节点的旋转不会破坏二叉搜索树的规则。

    然后就是如何命名不平衡树的?左左(LL)型意思是从插入结点开始,需要往左上走两次才能到不平衡节点,其他同理。

    旋转的方法在原链接有说。以下的图片中x是不平衡节点。

   完全二叉树:

    参考链接:常见数据结构——完全二叉树(定义、特征、节点个数的判断以及C++简单实现)-CSDN博客

    完全二叉树是由满二叉树而引出来的,若设二叉树的深度为h除第 h 层外其它各层 (1~h-1) 的结点数都达到最大个数(即1~h-1层为一个满二叉树),第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。

    完全二叉树,有左子树不一定有右子树,有右子树一定有左子树,叶子节点只能出现在倒数第一和倒数第二层,适合于顺序结构存储。

    完全二叉树中,度数为0的节点个数比度数为2的节点个数多1,且度数为1的节点个数是1或0,可以结合二叉树的三个节点公式(二叉树那里讲了)

    

    在链接中解释了完全二叉树的k(深度)的取值范围,嗯,牛客网有人给出了更好的公式。具有n个结点的完全二叉树(包括满二叉树)的高度为【log2 n】+1 或者(【log2 (n+1 )】)【log2 n】+1中的【】是向下取整,【log2 (n+1 )】中的【】是向上取整

    

  哈夫曼树:

    参考链接:超好理解的哈夫曼树(最优二叉树)与例题_哈夫曼树的构造例题-CSDN博客

    虽然有人说这篇博客的哈夫曼树建错了,但是我看不出来(我觉得蛮对的),不过原理是正确的。

    哈夫曼树又被称为二叉最优树。

    Huffman 树的带权路径长度WPL等于 各叶子结点的带权路径长度之和

    哈夫曼树是一种特殊的完全二叉树。所以完全二叉树的公式都可使用。 

 

  二叉搜索树:

    二叉排序树,也称二叉搜索树,特点是 左子树的节点值 < 根节点值 < 右子树的节点值。所以最小值的左子树为空。注意,由于树其实是递归结构(),所以这里的规则同样也适用子树。

    参考链接:数据结构——二叉搜索树详解-CSDN博客

 

  线索二叉树:

    参考链接:线索二叉树(图解+完整代码)-CSDN博客

 (来自牛客网用户 ryanxw)

   B树:(老朋友了)

    参考链接:图解B树的原理及操作_b树原理详解-CSDN博客

  (以下来自牛客网用户 ICANTHEARYOU)

 

 

  一道杂题:(写这道题目的时候脑袋空空的随便选了一个)

 

 

  to be continue.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/31214.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

PWM

PWMPWM1. 什么是PWM? 2. 面积等效原理2.1. 什么是面积等效原理? 2.2. 面积等效原理的理解3. 相关概念3.1. 周期和频率 3.2. 占空比4. 总结 参考链接 others1. 什么是PWM? PWM是Pulse Width Modulation的缩写,中文是脉冲宽度调制。 是利用微处理器的数字输出来对模拟电路进行…

02--JS02--高级

JavaScript02: 进阶 一. 变量声明 1.1 变量提升 // 以下代码,或多或少会有些问题的 function fn(){console.log(name);var name = 大马猴; }fn()// 问题: name变量先使用,再定义 这么写代码,在其他语言里. 绝对是不允许的 但是在js里,不但允许,还能执行,为什么呢? 因…

库的移植

库移植的步骤从官网下载需要移植的库的源码包。解压压缩包,解压后找到自述文件README,打开README了解libjpeg库的使用规则!根据源码包中的install.txt的文本,学习libjpeg库的移植和安装的步骤,移植libjpeg的步骤分为三步:配置(./configure) + 编译(make) + 安装(make in…

uniapp wifi调试

adb 版本大于 30无线调试 -> 使用配对码配对设备终端输入命令: adb pair ip地址:port端口 (替换为对应的ip和端口),回车后,继续输入WLAN配对码成功提示 Successfully paired to 192.168.137.21:38583 [guid=adb-xxxxxxx]最后 adb connect ip地址:port端口 (替换为对应的i…

项目冲刺day6

这个作业属于哪个课程 软工4班这个作业要求在哪里 作业要求1.会议1. 照片 线上会议:2. 昨日已完成: 商品分类,购物车功能。部分完成轮播图功能。3.今天计划完成的工作 完成剩下的轮播图、用户头像、文件上传功能,争取尽早将后端部分部署于云端。2.燃尽图3.每人的代码签入记…

在线抽奖系统的测试报告

上一篇博客解析了在线抽奖系统的难点,这篇博客是在线抽奖系统的测试报告 本文主要就是展示在线抽奖系统各个模块的测试用例以及使用自动化工具测试核心功能 一、测试用例 1、注册页面测试用例2、登录页面测试用例3、奖项设置页面测试用例 4、抽奖页面测试用例二、功能测试 测试…

git 免密推送代码到github

git 免密推送代码到github。 参考:https://www.bilibili.com/video/BV1vy4y1s7k6?p=26&vd_source=ad97a93a8a42c9559b03a66114d94d18 关键动作: 然后: