1. 程式人生 > >驗證二叉查詢樹

驗證二叉查詢樹

二叉查詢樹

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

一棵BST定義為:

節點的左子樹中的值要嚴格小於該節點的值。
節點的右子樹中的值要嚴格大於該節點的值。
左右子樹也必須是二叉查詢樹。

因為二叉查詢樹的中序遍歷是有序的。所以驗證是否為二叉查詢樹,用中序遍歷這個二叉樹,如果前一個結點的值大於當前結點的值,則證明這個不是二叉樹。

程式碼實現

bool isValidBST(TreeNode *root) {
        // write your code here
        if(root == NULL)
            return true
; stack<TreeNode*> stk; TreeNode *pre = NULL; while(root || !stk.empty()) { if(root) { stk.push(root); root = root->left; } else { root = stk.top(); stk.pop(); if
(pre && (root->val <= pre->val)) return false; pre = root; root = root->right; } } return true; }