Validate Binary Search Tree

来源:互联网 发布:奇迹暖暖 网络连接失败 编辑:程序博客网 时间:2024/05/17 03:40

题目:判断一个棵树是否是BST树

思路:BST树要求当前节点的所有左子树的节点的key小于当前节点的key,右子树节点的key大于当前节点的key。例如

二叉树{10,5,#,#,15,6,20},其判断过程是这样:

1.到达key=10的节点,min=INT_MIN, max=INT_MAX, min<10<max,继续

2.到达key=5的节点,min=INT_MIN,max=10, min<5<max,继续

3.到达key=15的节点,min=10, max=INT_MAX, min<15<max,继续

4.到达key=6的节点,min=10,max=15, 不满足min<6<max,返回false

由此可见,把当前节点作为最大值传给左子树,作为最小值传给右子树,然后判断

class Solution {public:    bool isBSTHelper(TreeNode* root, int low, int high)    {        if (root == NULL)        {            return true;        }        if (root->val > low && root->val <high)        {            return isBSTHelper(root->left, low, root->val) && isBSTHelper(root->right, root->val, high);        }        else        {            return false;        }    }    bool isValidBST(TreeNode *root) {        return isBSTHelper(root, INT_MIN, INT_MAX);    }};


0 0
原创粉丝点击