码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Java数据结构与Java算法学习Day05---二叉树(简略笔记记录)


    目录

    一、二叉树 79

    1.1树的基本定义79 

    1.2数的相关术语 80

    1.3二叉树的基本定义 81

    1.4二叉查找树的创建 82

    1.4.1二叉树查找树创建---插入方法(put) 83

    1.4.2二叉树查找树创建---获取方法(get)84

    1.4.3二叉树查找树创建---删除方法(delete)85

    1.4.4代码的测试 86

    1.5二叉查找树其他便捷方法 87

    1.5.1查找二叉树中最小的键 87

    1.5.2查找二叉树中最大的键 88

    1.6二叉树的基础遍历 89

    1.6.1二叉树---前序遍历 90

    1.6.2二叉树---中序遍历 91

    1.6.3二叉树---后序遍历 92

    1.7二叉树---层序遍历 93

    1.8最大深度问题 94

    1.9折纸问题 95


    一、二叉树 79

    1.1树的基本定义79 

    数组:

    查询的效率比较快,原因是其地址是连续的,根据索引能够快速的查找到。

    增删的效率比较慢,每次的增删需要涉及到大量数据的移动。 

    链表:

    查询的效率比较慢,是因为需要从头结点开始进行查询。  

    增删的效率比较快,不需要大量的数据移动,只需要在插入的结点处断开后,然后进行插入即可。

     树:结合了链表和数组的。

    1.2数的相关术语 80

     结点的度: 

    叶结点:

     结点的层序编号:

    数的度:

    注:根结点的度不一定是最大的

    孩子结点、双亲结点、兄弟结点:

    1.3二叉树的基本定义 81

    二叉树就是度不超过2的数(每个结点最多有两个子结点) 

    二叉查找树:左子结点小于右子结点。.

    堆:左子结点和右子结点之间没有大小区分。

     

     两个特殊的二叉树:

    满二叉树:

     每一层的结点的个数都能达到2^(k-1)  k:层数

    完全二叉树:

    1.4二叉查找树的创建 82

    通过键值对的形式 进行查询。

    1.4.1二叉树查找树创建---插入方法(put) 83

    插入方法put实现思想:

    本部分代码在/tree/BinaryTree中。

    1.4.2二叉树查找树创建---获取方法(get)84

    查询方法get实现思想:

    1.4.3二叉树查找树创建---删除方法(delete)85

    删除原来的二叉树之后,需要有一个新的再次替换。这个新的替换是谁比较合适呢?

    如何确定这个删除后新替换的元素呢?

      找到被删除元素的右子树中最小结点,作为替换位置的结点元素。

    1.4.4代码的测试 86

    本部分代码在/test/BinaryTreeTest中

    1.5二叉查找树其他便捷方法 87

    1.5.1查找二叉树中最小的键 87

    本部分代码在/test/BinaryTree中。最左端的就是最小的键

    1.5.2查找二叉树中最大的键 88

    本部分代码在/test/BinaryTree中。最右端的就是最大的键

    1.6二叉树的基础遍历 89

    二叉树的基本遍历的基本的概念: 

    遍历方法转换为:搜索路径问题。

    搜索路径有三种:(其中最重要的是中序遍历)

    示例:

    1.6.1二叉树---前序遍历 90

    前序遍历代码:/tree/BinaryTree

    测试代码:/test/BinaryTreeErgodicTest

    1.6.2二叉树---中序遍历 91

    中序遍历代码:/tree/BinaryTree

    测试代码:/test/BinaryTreeErgodicTest

    1.6.3二叉树---后序遍历 92

    后序遍历代码:/tree/BinaryTree

    测试代码:/test/BinaryTreeErgodicTest

    1.7二叉树---层序遍历 93

    层序遍历:是从上到下,然后在每层进行从左到右进行查询,进行队列进入。

    层序遍历代码:/tree/BinaryTree

    测试代码:/test/BinaryTreeErgodicTest

    1.8最大深度问题 94

    待看 

    1.9折纸问题 95

    待看

  • 相关阅读:
    基于邻接矩阵的广度优先遍历
    【逆向】修改LightCycler 96文件Summary日期
    Unity Xlua热更新框架(三):资源管理
    Hadoop大数据系统架构(深入浅出)
    (十九)STM32——输入捕获
    meta理解及使用
    2.4 GHZ室内信道测量数据集
    Go如何优雅的记录操作日志
    Java项目:ssm医院管理系统
    AD教程 (十八)导入常见报错解决办法(unkonw pin及绿色报错等)
  • 原文地址:https://blog.csdn.net/xiaoxixicc/article/details/128184391
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号