首先第乙個問題就是什麼樣的二叉樹具有合法性?簡單來說就是所有節點的左子樹都比節點小,右子樹比節點大。必須遵守這乙個規則這樣的二叉樹就是合法的。
那麼如何判斷它是不是合法的呢?
是不是可以直接來判斷一下左子節點和節點還有右子節點的大小就可以了呢?當然是不可以的,你現在確定了節點的左子節點和右子節點符合規則,但你沒辦法確定左子樹下面的節點是不是都符合規則,萬一左子樹下面有乙個節點比本節點大,那麼就是不符合規則的。也就是說我們不能夠直接來解決這個問題。
那麼什麼樣的思路可以解決這個問題?
我們思考一下,現在是不是發現了沒辦法只是比較左子節點和右子節點,因為左子樹和右子樹下的所有節點都需要被約束才能夠符合規則,那麼怎麼樣才能約束範圍呢?我們只需要在函式上面傳參就可以了,傳什麼引數?我們不是要約束下面的所有節點嗎,根據我們節點的取值,我們可以通過給定乙個範圍min和max就能夠約束節點的取值,每一次節點是否符合規則只需要參照這個範圍裡面的值是否有越界就可以了。
**
boolean
isbst
(treenode root)
boolean
isbst
(treenode root,treenode min,treenode max)
二叉搜尋樹後序遍歷序列合法性判斷
鏈結 二叉搜尋樹後序遍歷序列合法性判斷 題目詳情 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。分析 非遞迴 非遞迴也是乙個基於遞迴的思想 左子樹一定比右子樹小,因此去掉根後,數字分為left,right兩部...
判斷出入棧的合法性
本篇部落格闡述內容 假設入棧序列是 出棧序列是 那麼我們讓入棧序列入棧,1先入,看一看第乙個出棧的是不是1,不是繼續將2壓棧,直到1,2,3,4入棧,4和出棧序列的第乙個匹配到了,我們將入棧的 4 pop掉,然後繼續和出棧序列的第二個匹配,看看是否需要出棧,如不需要,繼續壓棧,以此類推,直到入棧序列...
二叉樹 判斷二叉樹是否為完全二叉樹
問題描述 判斷一棵二叉樹是否為完全二叉樹。知識點 完全二叉樹是指除二叉樹的最後一層外,其他各層的節點數達到最大個數,且最後一層的葉節點從左到右連續存在,只缺右側若干節點。演算法實現 class node is complete binary tree public static boolean is...