lintcode 95 驗證二叉查詢樹

2022-03-29 17:45:01 字數 692 閱讀 7878

給定乙個二叉樹,判斷它是否是合法的二叉查詢樹(bst)

一棵bst定義為:

樣例乙個例子:

上述這棵二叉樹序列化為 .

標籤分治法 二叉查詢樹 遞迴 二叉樹

思路

方法一:中序遍歷這棵樹,用陣列儲存遍歷結果,若陣列嚴格遞增,則可判定這棵樹是乙個二叉排序樹

方法二:用prev指標記錄父節點資訊,遍歷樹,用二叉排序樹的定義來判斷

code

在這裡給出方法二的實現**

/**

* definition of treenode:

* class treenode

* }*/class solution

bool isvalidbst(treenode *root, treenode *&pre)

if (!isvalidbst(root->left, pre))

if (pre != null && pre->val >= root->val)

pre = root;

return isvalidbst(root->right, pre);}};

兩次過 Lintcode 95 驗證二叉查詢樹

給定乙個二叉樹,判斷它是否是合法的二叉查詢樹 bst 一棵bst定義為 乙個例子 2 1 4 3 5上述這棵二叉樹序列化為.二叉查詢樹有乙個重要的性質 即中序遍歷遞增 不存在兩個節點值相等 根據此,中序遍歷完成後,檢視序列是否有序即可知道是否是二叉查詢樹。definition of treenode...

lintcode 驗證二叉查詢樹

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

LintCode 分治 驗證二叉查詢樹

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