Leetcode 98. 验证二叉搜索树 解题思路及C++实现
生活随笔
收集整理的這篇文章主要介紹了
Leetcode 98. 验证二叉搜索树 解题思路及C++实现
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
解題思路:
分別驗(yàn)證root的左右子樹是否是二叉樹,同時(shí),左子樹的最大值要小于root->val,右子樹的最小值要大于root->val。
在左右子樹中,一直向root的左子樹探索,就能得到其最小值,一直向右探索,就能得到其最大值。
?
/*** 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) return true;return isLeftBST(root->left, root->val) && isRightBST(root->right, root->val);}bool isLeftBST(TreeNode* root, int n){if(isValidBST(root)){while(root){if(root->val >= n) return false;root = root->right;}return true;}else return false;}bool isRightBST(TreeNode* root, int n){if(isValidBST(root)){while(root){if(root->val <= n) return false;root = root->left;}return true;}else return false;} };?
?
總結(jié)
以上是生活随笔為你收集整理的Leetcode 98. 验证二叉搜索树 解题思路及C++实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Leetcode 96. 不同的二叉搜索
- 下一篇: Leetcode 102. 二叉树的层次