給定乙個二叉樹,判斷其是否是乙個有效的二叉搜尋樹

2021-09-25 18:16:11 字數 1190 閱讀 3562

給定乙個二叉樹,判斷其是否是乙個有效的二叉搜尋樹。

假設乙個二叉搜尋樹具有如下特徵:

節點的左子樹只包含小於當前節點的數。

節點的右子樹只包含大於當前節點的數。

所有左子樹和右子樹自身必須也是二叉搜尋樹。

示例 1:

輸入:2

/ \1   3

輸出: true

示例 2:

輸入:5

/ \1   4

/ \3   6

輸出: false

解釋: 輸入為: [5,1,4,null,null,3,6]。

根節點的值為 5 ,但是其右子節點值為 4 。

解析:直接採用中序遞迴並不可行,因為遞迴比較的僅僅是相鄰的元素,對於測試用例: [10,5,15,null.null,6,20]

5                            15

null   null             6                      20

會得到錯誤的答案true,其實應該是false;

正確**實現:

/**

* definition for a binary tree node.

* struct treenode

* };

*/class solution

stop=s.top();

arr.push_back(stop->val);

s.pop();

if(stop->right) s.push(stop->right);

}for(int i=0;i=arr[i+1]) return false;

return true;

*/}

bool recursion(treenode* root, bool& tag, int& prev)

bool compare(int v, bool&tag, int& prev)

if(v<=prev) return false;

prev=v;

return true;}};

執行結果:

參考:

二叉樹 判斷乙個樹是否是平衡二叉樹

題目 給定乙個二叉樹,判斷其是否是平衡二叉樹。方法一 bool isbalancedtree treenode root bool ltree isbalancedtree root left bool rtree isbalancedtree root right if ltree rtree r...

判斷乙個二叉樹是否對稱

面試題裡不光要求結構上對稱,而且要求對稱結點中的內容一樣 可以使用遞迴的方法,同時比較左子樹的左結點和右子樹的右結點,比較左子樹的右結點和右子樹的左結點。如下 public class test boolean judge node leftnode,node rightnode else if l...

如何判斷乙個樹是否是平衡二叉樹

判斷乙個樹是二叉平衡樹 平衡二叉樹十是一種高度自平衡樹,它的任何乙個結點的左右子樹的高度之差不會查過1。遞迴方法 從定義個就可以寫出乙個遞迴的解法,先求左右子樹是否平衡然後,再判斷自己是否平衡。如下 class solution private int treedepth treenode proo...