[LeetCode] Validate Binary Search Tree
来源:互联网 发布:qq飞车冲锋战神数据 编辑:程序博客网 时间:2024/06/05 14:50
Validate Binary Search Tree
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.
解题思路:
(1)空二叉树是BST
(2)若根节点R值大于左子树的最大值,且小于右子树最小值,并且左右子树都是BST,那么以R为根的树也是BST
因此代码如下:
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: bool isValidBST(TreeNode* root) { if(root == NULL){ return true; } TreeNode* leftMaxNode = getMaxNode(root->left); TreeNode* rightMinNode = getMinNode(root->right); if(leftMaxNode!=NULL && leftMaxNode->val >= root->val){ return false; } if(rightMinNode!=NULL && rightMinNode->val <= root->val){ return false; } return isValidBST(root->left) && isValidBST(root->right); } TreeNode* getMaxNode(TreeNode* root){ if(root == NULL){ return NULL; } TreeNode* maxNode = root; TreeNode* leftMaxNode = getMaxNode(root->left); TreeNode* rightMaxNode = getMaxNode(root->right); if(leftMaxNode!=NULL && leftMaxNode->val > maxNode->val){ maxNode = leftMaxNode; } if(rightMaxNode!=NULL && rightMaxNode->val > maxNode->val){ maxNode = rightMaxNode; } return maxNode; } TreeNode* getMinNode(TreeNode* root){ if(root == NULL){ return NULL; } TreeNode* minNode = root; TreeNode* leftMinNode = getMinNode(root->left); TreeNode* rightMinNode = getMinNode(root->right); if(leftMinNode!=NULL && leftMinNode->val < minNode->val){ minNode = leftMinNode; } if(rightMinNode!=NULL && rightMinNode->val < minNode->val){ minNode = rightMinNode; } return minNode; }};
0 0
- LeetCode: Validate Binary Search Tree
- [Leetcode] Validate Binary Search Tree
- LeetCode : Validate Binary Search Tree
- [LeetCode] Validate Binary Search Tree
- [LeetCode] Validate binary search tree
- [LeetCode]Validate Binary Search Tree
- [Leetcode]Validate Binary Search Tree
- [leetcode]Validate Binary Search Tree
- LeetCode-Validate Binary Search Tree
- [leetcode] Validate Binary Search Tree
- LeetCode - Validate Binary Search Tree
- [LeetCode] Validate Binary Search Tree
- Leetcode Validate Binary Search Tree
- LeetCode | Validate Binary Search Tree
- LeetCode - Validate Binary Search Tree
- Leetcode: Validate Binary Search Tree
- 【Leetcode】Validate Binary Search Tree
- 【leetcode】Validate Binary Search Tree
- 集合
- Spring依赖注入:注解注入总结
- Hdu oj 1686 Oulipo
- Pycharm的安装及主要的应用,使用说明及案例
- 上传下载文件(并处理了下载文件名乱码问题)
- [LeetCode] Validate Binary Search Tree
- hdoj 4737 区间维护
- c# 下载网页图片
- r语言 利用log4r和trycatch收集异常日志例子
- Seconds_Behind_Master分析主从延迟
- Xcode6.4安装CommandLineTools
- Stacks-分别用链表和数组实现(in Java)
- Leetcode44 Wildcard Matching
- Flow Problem