LintCode 分治 驗證二叉查詢樹

2021-08-08 20:32:59 字數 778 閱讀 5291

點此進入題目

解題思路:該題目要求驗證二叉查詢樹,那就應該先明白什麼是二叉查詢樹:1、節點的左子樹中的值要嚴格小於該節點的值。2、節點的右子樹中的值要嚴格大於該節點的值。3、左右子樹也必須是二叉查詢樹。4、乙個節點的樹也是二叉查詢樹。這裡要注意的是,左(右)子樹不存在時若右(左)子樹符合條件,那麼該樹也是查詢二叉樹。所以應該用遞迴來處理此題目。

解題過程:首先給定一棵樹root,若該樹為空或者左右子樹為空,那麼返回1;否則若左子樹為空或者節點的左子樹中的值要嚴格小於該節點的值且右子樹為空或者節點的右子樹中的值要嚴格大於該節點的值,那麼若左子樹的右子樹為空或者節點的左子樹的右子樹中的值要嚴格小於該節點的值且右子樹的左子樹為空或者節點的右子樹的左子樹中的值要嚴格大於該節點的值,那麼進入遞迴判斷該子樹的左子樹返回值與判斷右子樹的返回值的乘積。否則返回0,否則返回0.

**實現:bool isvalidbst(treenode * root) 

else return 0;

}else return 0;}}

個人總結:這道題目我覺得還是有點難度的,尤其是判斷兩個子樹是否滿足條件,要注意的是該節點左子樹的右子樹應該也要大於該節點的左子樹,且要小於該節點,右子樹的左子樹類似。所以要用兩個if語句,而且左子樹或者右子樹為空時,那麼就屬於滿足條件。

lintcode 驗證二叉查詢樹

題目 給定乙個二叉樹,判斷它是否是合法的二叉查詢樹 bst 一棵bst定義為 節點的左子樹中的值要嚴格小於該節點的值。節點的右子樹中的值要嚴格大於該節點的值。左右子樹也必須是二叉查詢樹。乙個節點的樹也是二叉查詢樹。解題 二叉查詢樹中序遍歷是公升序,可以中序遍歷後,根據是否公升序判斷是否是二叉查詢樹,...

lintcode 95 驗證二叉查詢樹

給定乙個二叉樹,判斷它是否是合法的二叉查詢樹 bst 一棵bst定義為 樣例乙個例子 上述這棵二叉樹序列化為 標籤分治法 二叉查詢樹 遞迴 二叉樹 思路 方法一 中序遍歷這棵樹,用陣列儲存遍歷結果,若陣列嚴格遞增,則可判定這棵樹是乙個二叉排序樹 方法二 用prev指標記錄父節點資訊,遍歷樹,用二叉排...

lintcode 726 驗證滿二叉樹

描述 如果一棵二叉樹所有節點都有零個或兩個子節點,那麼這棵樹為滿二叉樹.反過來說,滿二叉樹中不存在只有乙個子節點的節點.滿二叉樹 1 2 3 4 5 不是一棵滿二叉樹 1 2 3 4樣例 給出樹 返回 true 給出樹 返回 false 給出樹 返回 true 輸入測試資料 每行乙個引數 defin...