(一)遞迴判斷
遞迴判斷時,在結點值為整型時,必須指定初始最小值為int_min,最大值為int_max,每次遞迴時,傳入上一層的結點值最為判斷依據。
bool judgebst_recur(treenode *node, int min, int max)
(二)非遞迴判斷
bst的中序遍歷,一定是乙個非遞減序列,後乙個結點值大於等於前乙個結點值,採用二叉樹的中序遍歷,並記錄下前乙個結點,比較前一節點和當前結點的值。
bool judgebst(treenode *node)
prevnode = curnode;
s.push(curnode->right);}}
return true;
}
測試介面:
int main(void)
判斷一棵樹是不是二叉搜尋樹
將一顆二叉搜尋樹轉換成雙向鍊錶,既然可以轉換,那麼轉換過程中就可以進行判斷這是不是一顆二叉搜尋樹,注意在遞迴的過程中,需要將下乙個函式要比較的節點傳遞過去,這個需要放在遞迴函式中進行。tree plistnode nullptr bool issearchtree tree root,tree pl...
判斷一棵樹是不是完全二叉樹
還有一種特殊的完全二叉樹就是葉子節點都在同一層的,如下圖 完全二叉樹定義,若設二叉樹的深度為h,除第 h 層外,其它各層 1 h 1 的結點數都達到最大個數,第 h 層所有的結點都連續集中在最左邊,這就是完全二叉樹。思路是 用bfs,一層一層的遍歷二叉樹的節點,一但遍歷到空節點,那麼不在往佇列裡加入...
判斷一棵樹是不是完全二叉樹
分析 假設一棵樹是完全二叉樹,層數為k,那麼可以得到以下結論 1.前k 1層節點肯定都是飽和的,即到達了最大值 2.第k 1層不一定所有的節點都有孩子節點,如果有孩子節點,那麼一定是左孩子節點。所以我們要先找到第乙個孩子不全的節點,如果只有右孩子節點,那麼一定不是完全二叉樹。找到第乙個不飽和節點後,...