98. 驗證二叉搜尋樹
阿新 • • 發佈:2018-12-09
題目
程式碼
/** * 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) { return isValidBST(root, nullptr, nullptr); } bool isValidBST(TreeNode* root, TreeNode* minNode, TreeNode* maxNode) { //此節點不存在,返回true if (!root) return true; //此結點比最大值要大或者比最小值要小. if (minNode && root->val <= minNode->val || maxNode && root->val >= maxNode->val) return false; //繼續判斷左邊或者右邊,判斷左邊的時候傳入最大值為root,判斷右邊的時候傳入最小值為root return isValidBST(root->left, minNode, root) && isValidBST(root->right, root, maxNode); } };
思路
不懂的可以看程式碼註釋。