目录
--------------------------------------------------------------------------------------------------------------------------------?
up方法里面,child =parent:因为如果没有退出循环,就还要为下一次的比较做好准备,因此要改变child的值,那改变成什么样子呢?就变成这一轮parent的样子。?
---------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------
代码解释:利用布尔类型判断是大顶堆还是小顶堆,减少重复的代码。
别的扩容代码:
---------------------------------------------------------------------------------------------------------------------------------
经过修改:?
---------------------------------------------------------------------------------------------------------------------------------
比较器?
?
--------------------------------------------------------------------------------------------------------------------------------?
如何记忆:
前中后,则记忆中间的部分,
前对应中间访问的是左,
中对应中间访问的是中,
后对应中间访问的是右。其余的就按照左中右进行补充。?
理解:
前序遍历,从左向右走,去的时候遇到啥遍历啥
中序遍历:从左向右走,去的时候不要,回来的时候,遇到啥遍历啥
后序遍历:从左向右,去的时候不要,回来的时候,真正结束了,才遍历,比如像这个1,我确实后来经过了它,但是其实我们的缘分还未尽。缘分尽了,才遍历。
用栈记得来时路。?
中序
前序??
后序遍历中,要增加一些细节去限定条件。当peek的右子树为null的时候,因为左子树已经搞完,而又没有右子树,就可以直接弹出peek。当peek的右子树不为null的时候,就要去判断来时路到底是走左子树还是右子树,因为要判断我现在走回来这条路到底是不是从右子树这边走回来(也就是比较弹栈出来的那个数字是不是peek的右子树),如果弹栈的是7,就说明右孩子都处理完了。如果都不是以上的情况,?则标记peek的右子树为curr,进入下一轮的比较。
--------------------------------------------------------------------------------------------------------------------------------?
如果是null的话,就不应该比较了。
--------------------------------------------------------------------------------------------------------------------------------?
?如果函数最后一步是调用自己,那就是伪递归,尽可能将这个形式转化为非递归形式。
非递归,以下
为了让泛型key进行大小比较,就要实现接口,可以搞一个泛型,或者两个泛型。