这题一共有五种不同的“ooo”入栈和出栈方式。最容易遗漏的一种是先入栈两个o,出栈一个o,再入栈一个o,出栈两个o。
这里注意队列队尾入队,队头出队。
注意叶节点之间相对位置不会改变。
注意度和叶子数量的关系。
注意最下面两层分别都只有一个节点。
threaded hinary trees是线索二叉树。线索二叉树介绍:线索二叉树(Threaded BinaryTree)
注意,从一个空堆依次插入元素和从一个一只队列构建一个最小堆堆方式是不一样的。从一个已知堆构建最小堆:从第n/2个元素开始,观察它和两个孩子的大小关系,如果正确,不变,如果错误,把最小的孩子和他交换,然后再观察交换位置后它和它现在的孩子的大小关系,直到大小关系正确;然后堆n/2-1位置的元素进行上述操作,直到根节点。
注意,桶排序的运算时间只和数据量以及最大值的位数有关。
注意题意,选出在最后一轮之前可能每个元素都不在他们的最终排序位置的算法。
额外空间,堆排序实际上不需要额外空间,快排需要的额外空间是O(log(N))因为每次需要占用一个位置作为中轴的位置,归并排序的额外空间是O(N)。