欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

二叉搜索树判定

发布时间:2023/12/13 编程问答 34 豆豆
生活随笔 收集整理的这篇文章主要介绍了 二叉搜索树判定 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
  • leetcode的原文链接
  • 树的定义

 C++版本

  • 需要给每一个节点的数值划分范围
  • 若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;
  • 任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;
  • 任意节点的左、右子树也分别为二叉查找树;
  • 没有键值相等的节点。

 

bool isValidBST_children(TreeNode* root,long min_value,long max_value){if (root == nullptr){return true;}if (root->val >= max_value || root->val <= min_value){return false;}return isValidBST_children(root->left,min_value,root->val) &&isValidBST_children(root->right,root->val,max_value);} bool isValidBST(TreeNode* root) {return isValidBST_children(root,INTMAX_MIN,INTMAX_MAX); }中序遍历版本class Solution { public:bool isValidBST(TreeNode* root) {stack<TreeNode*> stack;long long inorder = (long long)INT_MIN - 1;while (!stack.empty() || root != nullptr) {while (root != nullptr) {stack.push(root);root = root -> left;}root = stack.top();stack.pop();// 如果中序遍历得到的节点的值小于等于前一个 inorder,说明不是二叉搜索树if (root -> val <= inorder) {return false;}inorder = root -> val;root = root -> right;}return true;} };作者:LeetCode-Solution 链接:https://leetcode-cn.com/problems/validate-binary-search-tree/solution/yan-zheng-er-cha-sou-suo-shu-by-leetcode-solution/ 来源:力扣(LeetCode) 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 

总结

以上是生活随笔为你收集整理的二叉搜索树判定的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。