堆的概念:
-
堆中某個節點的值總是不大於或不小於其父節點的值;
-
堆總是一棵完全二叉樹。
以百度的一個面試題為例:
序列{9,12,17,30,50,20,60,65,4,19}構造為堆后,堆所對應的的中序遍歷序列可能為
A、65,12,30,50,9,19,20,4,,17,60
B、65,12,30,9,50,19,4,20,17,60
C、65,9,30,12,19,50,4,20,17,60
D、65,12,9,30,50,4,20,9,17,60
一、序列構造成堆:
堆構造原則:先固定已穩定的堆,再 安照從上到下,從左到右的原則堆積。
小頂堆原理:每個結點的值都小於其左孩子和右孩子結點的值
小頂堆映射的數組為
大頂堆
原理與小頂堆相似:每個結點的值都大於其左孩子和右孩子結點的值
大頂堆映射的數組為
注:藍色為穩定狀態,橙色為新增未確定狀態,紅色為要調整狀態
二、堆所對應的的中序遍歷序列
中序遍歷:左中右 對構造成功的 小頂堆
中序遍歷遍歷結果:
答案選: B
先序遍歷遍歷結果:
后序遍歷遍歷結果: