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

驗證二叉查詢樹—LintCode

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

一棵BST定義為:

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

ac程式碼:

/**
 * Definition of TreeNode:
 * class TreeNode {
 * public:
 *     int val;
 *     TreeNode *left, *right;
 *     TreeNode(int val) {
 *         this->val = val;
 *         this->left = this->right = NULL;
 *     }
 * }
 */
class Solution { public: /* * @param root: The root of binary tree. * @return: True if the binary tree is BST, or false */ bool comp1(TreeNode *root, int k) { if(root==NULL) return true; if(root->val>=k) return false; return
comp1(root->left,k)&comp1(root->right,k); } bool comp2(TreeNode *root, int k) { if(root==NULL) return true; if(root->val<=k) return false; return comp2(root->left,k)&comp2(root->right,k); } bool isValidBST(TreeNode *
root) { // write your code here if(root==NULL) return true; if(root->left==NULL&&root->right==NULL) return true; bool a=true,b=true; if(!comp1(root->left,root->val)) return false; else a= isValidBST(root->left); if(!comp2(root->right,root->val)) return false; else b= isValidBST(root->right); return a&b; } };