当前位置: 首页 > news >正文

数据结构与算法——左程云05

【前言】:

后续有时间会把文中的图片整理好,将纸质笔记中的图做成JPG。

【1】:链表遗留

【单链表相交】:

  • 单链表算法层次上最难

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K0WslDXs-1663993923868)(/Users/yuguangyao/Library/Application Support/typora-user-images/image-20220819223715371.png)]

//这道题本身和节点上的值是没有关系的;

//两个链表中有某一个节点的内存地址是同一个,那我们就说这两个链表相交。

【理解相交】:

  • 《@@53_1》

【判断函数】:

一个链表如果有环,那么请返回第一个入环的节点 , 如果无环,则返回NULL;

(入参)——该链表的头节点;

【简单的哈希表方法】:

  • 《@@53_2》

【不存在的结构】:

如果一个链表有环,那么它一定会掉入到自己的环中出不来,它一定会掉入到自己的环里出不来,也不可能走到NULL,每一个节点都只能有一条往外指的next指针;

  • 《@@54_3》

【总结】:

找一个变量一直往下走 , 如果它走到空节点了 , 这个链表它肯定是没有环的,如果它走不到空节点,你又因为把沿途的节点都放到了哈希表里去 , 你每到一个节点都去查——当前的节点在不在哈希表里,如果有环,你一定会遇到——这个重复发现的时刻。当你发现下一个节点是哈希表中已经有的节点,那么该结点一定是第一个入环的节点。

【不用哈希表Find第一个入环的节点】:

  • 《@@54_4》

//如果无环,肯定会走到NULL;

//如果有环,一定会陷入循环;

【 无环单链表情况讨论 】:

  • 《@@56_5》

【求无环单链表相交节点】:

  • 《@@57_6》

【有环链表情况讨论】:

  • 《@@57_7》

【2】:二叉树

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PJaDCSbF-1663993923869)(/Users/yuguangyao/Library/Application Support/typora-user-images/image-20220820203038462.png)]

【叶子节点】:

左右孩子都为null 的节点;

【递归序】:

    public static void preOrderRecur(Node head) {
        if (head == null) {
            return;
        }
      
        System.out.print(head.value );  //【第一次】

        //  1
        preOrderRecur(head.left);    //左侧去递归遍历 ~
      
        System.out.print(head.value );  //【第二次】

        //  2
        preOrderRecur(head.right);   //右侧去递归遍历 ~
      
        System.out.print(head.value );  //【第三次】
    }
  • 《@@60_8》

//递归方法去完成二叉树的遍历 , 每一个节点都能回个3次( 每一个节点中的数字,都能在篮框中找到3次 );

//虽然某一次的时候可能什么也没干 , 但是, 它是可以回到的。

【三序遍历】:

在递归序的基础上,可以加工出三种顺序的遍历——先序、中序、后序。

【先序遍历】:

对于所有子树来说——先打印头节点,再打印左子树上所有的节点 , 再打印右子树上所有的节点;

  • 《@@60_9》

//只在第一次的时候打印 , 二、三次的时候 , 什么也不干~ ~ ~ ! ! !

【中序遍历】:

  • 《_10》

利用递归序,第二次来到该节点的时候才打印 , 不是第二次来到该节点的什么也不做。

【后序遍历】:

  • 《@@_11》

递归序中第三次的打印——后序。

【总结】:

先序、中序、后序 都可以由 《递归序》加工过来(只是选择打印的时机不同。)

【非递归频率】:

非递归行为在面试场上经常出现 , 看你有没有理解~~~!!!

【非递归实现三序】:

  • 一个定则:

​ //任何递归函数都可以改成非递归函数——这是一定的!!!

【非递归先序】:

  • 《@@62_12》

【非递归后序】:

  • 《@@63_13》

【非递归中序】:

  • 《@@65_14》

【左边界】:

所有的树都是可以被《左边界》给分解掉的 ~

  • 《@@68_15》

【树打印福利函数】:

  • 《@@69_16》

【二叉树面试】:

二叉树的Coding难度大于链表,单很少考二叉树Coding的难度 , 一般都是算法居多。

【二叉树的深度优先遍历】:

对于二叉树来说,深度优先遍历就是==〉先序遍历。

【二叉树的宽度优先遍历】:

  • 〈@@69_17〉

【求一颗二叉树的最大宽度】:

//你要能知道当前的节点在第几层 , 你还得统计这一层有多少个节点~~~

【得有一种机制】:

​ 知道在遍历的过程中 , 哪一层的范围是多少。

【新手研究方法】:

用纸画图 , 一点儿一点儿扣 , 看上去似乎很笨 , 但是这至少能保证你能看懂;

【求一颗二叉树的最大宽度(不用哈希表)】:

Node  curend     //当前层最后一个节点;( 你现在弹出的节点所在层中,这一层的最后一个节点 )
  
Node  nextend.    //下一层最后一个节点;( 当前所在层的下一层 )
  
int   curlevel    //当前层发现的节点数;

int   max				  //结算时的节点数————当前层的节点总数;
  • 《@@71_19》

相关文章:

  • STM32——2.4G无线通信实验
  • 【C语言数据结构】03.双链表
  • 非零基础自学Java (老师:韩顺平) 第23章 反射(reflection) 23.2 反射机制
  • (一)Java算法:二分查找
  • [前缀和]Tokitsukaze and Strange Inequality Codeforces1678C
  • Stl中map、set 容器(数据结构:AVL树、红黑树)--C++
  • Chapter20: Machine Learning for In Silico ADMET Prediction
  • Ubuntu下安装Miniconda
  • No1.搭建基本的密码模式请求token(授权服务端)
  • 代码随想录二叉树——从中序与后序遍历序列构造二叉树
  • 【2023泰凌微笔试题】~ 题目及参考答案
  • 采用Python中Tkinter模块的Treeview 组件显示xml文件
  • synchronized的实现原理与应用
  • 网上商城之支付
  • 一次搞懂Java如何调用Kotlin的高级特性
  • 【5+】跨webview多页面 触发事件(二)
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • CSS 专业技巧
  • Docker: 容器互访的三种方式
  • Fastjson的基本使用方法大全
  • Flex布局到底解决了什么问题
  • java中具有继承关系的类及其对象初始化顺序
  • js对象的深浅拷贝
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • mysql常用命令汇总
  • MySQL用户中的%到底包不包括localhost?
  • spring security oauth2 password授权模式
  • 大型网站性能监测、分析与优化常见问题QA
  • 第十八天-企业应用架构模式-基本模式
  • 基于 Babel 的 npm 包最小化设置
  • 技术:超级实用的电脑小技巧
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 前端之Sass/Scss实战笔记
  • 深度解析利用ES6进行Promise封装总结
  • 小试R空间处理新库sf
  • 源码安装memcached和php memcache扩展
  • 3月7日云栖精选夜读 | RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占绝对优势 ...
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #100天计划# 2013年9月29日
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • $ git push -u origin master 推送到远程库出错
  • (2)STM32单片机上位机
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (二)c52学习之旅-简单了解单片机
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (十一)图像的罗伯特梯度锐化
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (转)c++ std::pair 与 std::make
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .NET CF命令行调试器MDbg入门(三) 进程控制
  • .NET WebClient 类下载部分文件会错误?可能是解压缩的锅