LeetCode-Validate Binary Search Tree

来源:互联网 发布:蓝鸥unity3d 编辑:程序博客网 时间:2024/06/06 04:04

Given a binary tree, determine if it is a valid binary search tree (BST).

Assume a BST is defined as follows:

  • The left subtree of a node contains only nodes with keys less than the node's key.
  • The right subtree of a node contains only nodes with keys greater than the node's key.
  • Both the left and right subtrees must also be binary search trees.

confused what "{1,#,2,3}" means? > read more on how binary tree is serialized on OJ.


OJ's Binary Tree Serialization:

The serialization of a binary tree follows a level order traversal, where '#' signifies a path terminator where no node exists below.

Here's an example:

   1  / \ 2   3    /   4    \     5
The above binary tree is serialized as "{1,2,3,#,#,4,#,#,5}".
Solution:

Code:

<span style="font-size:14px;">/** * Definition for binary tree * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    bool helper(TreeNode *root, int &minimun, int &maximun) {        if (root == NULL) return true;        if (root->left == NULL && root->right == NULL) {            minimun = root->val;            maximun = root->val;            return true;        }        int leftMin, leftMax, rightMin, rightMax;        if (root->left != NULL) {            if (!helper(root->left, leftMin, leftMax))                return false;            if (leftMax >= root->val)                return false;            minimun = leftMin;        } else             minimun = root->val;        if (root->right != NULL) {            if (!helper(root->right, rightMin, rightMax))                return false;            if (rightMin <= root->val)                return false;            maximun = rightMax;        } else            maximun = root->val;        return true;    }        bool isValidBST(TreeNode *root) {        int minimun, maximun;        return helper(root, minimun, maximun);    }};</span>



0 0
原创粉丝点击