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

发布时间:2023年12月17日

目录

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

099 堆 增删替换

--------------------------------------------------------------------------------------------------------------------------------?

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

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

100 堆 e01 堆排序

100 堆e02 求数组第k大元素

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

100 堆e04 求数据流中位数1

100 堆e04 求数据流中位数2

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

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

别的扩容代码:

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

经过修改:?

100 堆e04 求数据流中位数3

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

比较器?

?

--------------------------------------------------------------------------------------------------------------------------------?

101 二叉树 概述

102 二叉树 深度优先遍历

如何记忆:

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

前对应中间访问的是左,

中对应中间访问的是中,

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

理解:

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

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

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

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

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

用栈记得来时路。?

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

中序

前序??

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

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

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

108 二叉树 e04 对称二叉树

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

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

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

112 二叉树 e06 最小深度

--------------------------------------------------------------------------------------------------------------------------------?

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

--------------------------------------------------------------------------------------------------------------------------------?

113 二叉树 e07 翻转二叉树

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

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

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

117 二叉搜索树 概述

118 二叉搜索树 get

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

非递归,以下

119 二叉搜索树 泛型key

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

文章来源:https://blog.csdn.net/2301_80185446/article/details/134962648
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。