码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 剑指offer-数据结构二


    大家好,我是Nefelibat,是一名研二的学生。

    在博客上记录算法笔记,是因为想push自己每天坚持刷几道算法题,同时也希望能把自己总结到的经验分享给大家,希望大家阅读愉快😊

    目录

    链表

    题目:从尾到头打印链表

    思路:

    代码

    用例

    树

    题目:输入前序遍历和中序遍历,重建二叉树

    思路:

    代码

    注意

    题目:二叉树的下一个节点 :给定一个二叉树和其中的一个节点,如何找出中序遍历的下一个节点?树中有三个指针,左右节点指针和父节点的指针

    思路

    代码

    测试用例

    栈和队列

    题目:用两个栈实现一个队列,并完成在队列尾部插入节点和在队列头部插入节点的功能

    思路

    代码

    测试用例

    题目:用两个队列实现一个栈

    思路



    链表

    题目:从尾到头打印链表

    思路:

    弄清楚在打印链表的时候是否能修改链表的结构?遍历链表,第一个遍历的节点是最后一个输出,最后一个遍历的节点是第一个输出,这是典型的后进先出,因此可以想到栈先进后出的属性,经过一个节点,就把这个节点放在栈中。

    代码

     

    用例

    输入的链表有多个节点,输入的链表只有一个节点

    输出链表的头节点为空

    树

    题目:输入前序遍历和中序遍历,重建二叉树

    思路:

    前序遍历的第一个节点是根节点,根据这个值去扫描中序遍历,就能获得左子树和右子树的节点值;用递归的方法去构建左子树和右子树。

    代码

    注意

    如果传入的前序指针和中序指针为null,长度小于等于0,就返回空值

    题目:二叉树的下一个节点 :给定一个二叉树和其中的一个节点,如何找出中序遍历的下一个节点?树中有三个指针,左右节点指针和父节点的指针

    思路

    情况1:如果一个节点有右子树,那么他的下一个节点是右指数的最左节点,也就是说从右子节点的左指节点的指针触发,就可以找到下一个节点。

    情况2:如果一个节点没有右子树,这个节点是父节点的左节点,那么他的下一个节点就是父节点;如果一个节点没有右子树,这个节点是父节点的右节点,那么这种情况就比较复杂,可以沿着父节点的指针一直向上遍历,一直到达是父节点的左子节点,那么这个节点的父节点就是下一节点

    代码

     

    测试用例

    1、完全二叉树、不完全二叉树

    2、特殊二叉树,如所有节点都没有左子节点的二叉树和所有节点都没有右子节点的二叉树,只有一个节点的二叉树,

    3、不同节点位置的下一个节点

    栈和队列

    题目:用两个栈实现一个队列,并完成在队列尾部插入节点和在队列头部插入节点的功能

    思路

    先将元素压入到一个栈中,然后弹出放入另外一个栈,从另外一个栈弹出的顺序就是队列先进先出的顺序

    代码

    测试用例

    1、往空的队列汇总添加、删除元素

    2、往非空的队列汇总添加、删除元素

    3、连续删除元素直到队列是非空

    题目:用两个队列实现一个栈

    思路

    先将元素入一个空的队列,然后将元素压入另外一个队列,而剩下的队列尾部的元素被弹出,然两个队列的元素如此这样反复

  • 相关阅读:
    同程内网流传的分布式凤凰缓存系统手册,竟遭GitHub强行开源下载
    姓莫的女孩子叫什么名字好听
    LeetCode_Array_1004. Max Consecutive Ones III 最大连续1的个数 III【滑动数组】【Java】【中等】
    数学建模学习(79):Matlab神经网络工具箱使用,实现多输入多输出预测
    猿创征文|date-fns 天助手函数
    云原生爱好者周刊:使用树莓派组建 K8s 集群 | 2022-08-08
    vscode中讨厌的蓝色波浪线的去除小trick和原理
    JWT的原理及实际应用
    【9.2】687. 最长同值路径
    docker部署mysql 实现远程连接
  • 原文地址:https://blog.csdn.net/qq_41821067/article/details/125415671
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号