12.13_黑马数据结构与算法笔记Java

目录

098 堆 heapify 3

099 堆 增删替换

100 堆 e01 堆排序

100 堆e02 求数组第k大元素

100 堆e03 求数据流第k大元素

100 堆e04 求数据流中位数1

100 堆e04 求数据流中位数2

100 堆e04 求数据流中位数3

101 二叉树 概述

102 二叉树 深度优先遍历

103 二叉树 前中后遍历 递归实现

104 二叉树 前中后遍历 非递归1

105 二叉树 前中后遍历 非递归2

106 二叉树 前中后遍历 非递归3

107 二叉树 前中后遍历 非递归4

108 二叉树 e04 对称二叉树

109 二叉树 e05 最大深度 解法1

110 二叉树 e05 最大深度 解法2

111 二叉树 e05 最大深度 解法3

112 二叉树 e06 最小深度

113 二叉树 e07 翻转二叉树

114 二叉树 e08 根据后缀表达式建树

115 二叉树 e09 根据前中遍历结果建树

116 二叉树 e010 根据中后遍历结果建树

117 二叉搜索树 概述

118 二叉搜索树 get

119 二叉搜索树 泛型key


098 堆 heapify 3

12.13_黑马数据结构与算法笔记Java_第1张图片

12.13_黑马数据结构与算法笔记Java_第2张图片

12.13_黑马数据结构与算法笔记Java_第3张图片

099 堆 增删替换

12.13_黑马数据结构与算法笔记Java_第4张图片

12.13_黑马数据结构与算法笔记Java_第5张图片

12.13_黑马数据结构与算法笔记Java_第6张图片

12.13_黑马数据结构与算法笔记Java_第7张图片

-------------------------------------------------------------------------------------------------------------------------------- 

12.13_黑马数据结构与算法笔记Java_第8张图片

12.13_黑马数据结构与算法笔记Java_第9张图片

up方法里面,child =parent:因为如果没有退出循环,就还要为下一次的比较做好准备,因此要改变child的值,那改变成什么样子呢?就变成这一轮parent的样子。 

---------------------------------------------------------------------------------------------------------------------------------

100 堆 e01 堆排序

12.13_黑马数据结构与算法笔记Java_第10张图片

12.13_黑马数据结构与算法笔记Java_第11张图片

100 堆e02 求数组第k大元素

12.13_黑马数据结构与算法笔记Java_第12张图片

12.13_黑马数据结构与算法笔记Java_第13张图片

100 堆e03 求数据流第k大元素

12.13_黑马数据结构与算法笔记Java_第14张图片

12.13_黑马数据结构与算法笔记Java_第15张图片

12.13_黑马数据结构与算法笔记Java_第16张图片

100 堆e04 求数据流中位数1

12.13_黑马数据结构与算法笔记Java_第17张图片

12.13_黑马数据结构与算法笔记Java_第18张图片

12.13_黑马数据结构与算法笔记Java_第19张图片

100 堆e04 求数据流中位数2

---------------------------------------------------------------------------------------------------------------------------------

代码解释:利用布尔类型判断是大顶堆还是小顶堆,减少重复的代码。

别的扩容代码:

12.13_黑马数据结构与算法笔记Java_第20张图片

---------------------------------------------------------------------------------------------------------------------------------

经过修改: 

12.13_黑马数据结构与算法笔记Java_第21张图片

100 堆e04 求数据流中位数3

12.13_黑马数据结构与算法笔记Java_第22张图片

---------------------------------------------------------------------------------------------------------------------------------

比较器 

12.13_黑马数据结构与算法笔记Java_第23张图片 12.13_黑马数据结构与算法笔记Java_第24张图片

-------------------------------------------------------------------------------------------------------------------------------- 

101 二叉树 概述

12.13_黑马数据结构与算法笔记Java_第25张图片

12.13_黑马数据结构与算法笔记Java_第26张图片

12.13_黑马数据结构与算法笔记Java_第27张图片

12.13_黑马数据结构与算法笔记Java_第28张图片

102 二叉树 深度优先遍历

12.13_黑马数据结构与算法笔记Java_第29张图片

12.13_黑马数据结构与算法笔记Java_第30张图片

12.13_黑马数据结构与算法笔记Java_第31张图片

12.13_黑马数据结构与算法笔记Java_第32张图片

12.13_黑马数据结构与算法笔记Java_第33张图片

如何记忆:

前中后,则记忆中间的部分,

前对应中间访问的是左,

中对应中间访问的是中,

后对应中间访问的是右。其余的就按照左中右进行补充。 

理解:

前序遍历,从左向右走,去的时候遇到啥遍历啥

中序遍历:从左向右走,去的时候不要,回来的时候,遇到啥遍历啥

后序遍历:从左向右,去的时候不要,回来的时候,真正结束了,才遍历,比如像这个1,我确实后来经过了它,但是其实我们的缘分还未尽。缘分尽了,才遍历。

12.13_黑马数据结构与算法笔记Java_第34张图片

103 二叉树 前中后遍历 递归实现

12.13_黑马数据结构与算法笔记Java_第35张图片

12.13_黑马数据结构与算法笔记Java_第36张图片

12.13_黑马数据结构与算法笔记Java_第37张图片

12.13_黑马数据结构与算法笔记Java_第38张图片

12.13_黑马数据结构与算法笔记Java_第39张图片

104 二叉树 前中后遍历 非递归1

12.13_黑马数据结构与算法笔记Java_第40张图片

12.13_黑马数据结构与算法笔记Java_第41张图片

用栈记得来时路。 

105 二叉树 前中后遍历 非递归2

12.13_黑马数据结构与算法笔记Java_第42张图片

中序

12.13_黑马数据结构与算法笔记Java_第43张图片

前序  

106 二叉树 前中后遍历 非递归3

12.13_黑马数据结构与算法笔记Java_第44张图片

12.13_黑马数据结构与算法笔记Java_第45张图片

后序遍历中,要增加一些细节去限定条件。当peek的右子树为null的时候,因为左子树已经搞完,而又没有右子树,就可以直接弹出peek。当peek的右子树不为null的时候,就要去判断来时路到底是走左子树还是右子树,因为要判断我现在走回来这条路到底是不是从右子树这边走回来(也就是比较弹栈出来的那个数字是不是peek的右子树),如果弹栈的是7,就说明右孩子都处理完了。如果都不是以上的情况, 则标记peek的右子树为curr,进入下一轮的比较。

107 二叉树 前中后遍历 非递归4

12.13_黑马数据结构与算法笔记Java_第46张图片

108 二叉树 e04 对称二叉树

12.13_黑马数据结构与算法笔记Java_第47张图片

109 二叉树 e05 最大深度 解法1

12.13_黑马数据结构与算法笔记Java_第48张图片

12.13_黑马数据结构与算法笔记Java_第49张图片

110 二叉树 e05 最大深度 解法2

12.13_黑马数据结构与算法笔记Java_第50张图片

111 二叉树 e05 最大深度 解法3

12.13_黑马数据结构与算法笔记Java_第51张图片

112 二叉树 e06 最小深度

-------------------------------------------------------------------------------------------------------------------------------- 

12.13_黑马数据结构与算法笔记Java_第52张图片

如果是null的话,就不应该比较了。

-------------------------------------------------------------------------------------------------------------------------------- 

12.13_黑马数据结构与算法笔记Java_第53张图片

12.13_黑马数据结构与算法笔记Java_第54张图片

113 二叉树 e07 翻转二叉树

12.13_黑马数据结构与算法笔记Java_第55张图片

114 二叉树 e08 根据后缀表达式建树

12.13_黑马数据结构与算法笔记Java_第56张图片

12.13_黑马数据结构与算法笔记Java_第57张图片

115 二叉树 e09 根据前中遍历结果建树

12.13_黑马数据结构与算法笔记Java_第58张图片

12.13_黑马数据结构与算法笔记Java_第59张图片

116 二叉树 e010 根据中后遍历结果建树

12.13_黑马数据结构与算法笔记Java_第60张图片

117 二叉搜索树 概述

118 二叉搜索树 get

12.13_黑马数据结构与算法笔记Java_第61张图片

12.13_黑马数据结构与算法笔记Java_第62张图片

12.13_黑马数据结构与算法笔记Java_第63张图片

12.13_黑马数据结构与算法笔记Java_第64张图片

12.13_黑马数据结构与算法笔记Java_第65张图片

12.13_黑马数据结构与算法笔记Java_第66张图片

 如果函数最后一步是调用自己,那就是伪递归,尽可能将这个形式转化为非递归形式。

非递归,以下

12.13_黑马数据结构与算法笔记Java_第67张图片

119 二叉搜索树 泛型key

为了让泛型key进行大小比较,就要实现接口,可以搞一个泛型,或者两个泛型。

12.13_黑马数据结构与算法笔记Java_第68张图片

12.13_黑马数据结构与算法笔记Java_第69张图片

12.13_黑马数据结构与算法笔记Java_第70张图片

你可能感兴趣的:(笔记,java,数据结构,链表,leetcode,算法,后端)