LC.98 | 验证二叉搜索树 | 树 | 中序遍历单调性
2026/5/8 18:55:33 网站建设 项目流程

输入:二叉树根节点root

要求:判断该树是否为有效二叉搜索树(BST)。

  • 任意节点:左子树所有值严格小于它,右子树所有值严格大于它。
  • 左右子树本身也必须是 BST。

输出:true / false


思路:

BST 的核心性质可以用一句话“降维”成数组问题:

BST 的中序遍历结果必须是严格递增序列。

所以我们做一次中序遍历(左-根-右),并维护一个变量prev表示“上一个访问到的节点值”。

遍历到当前节点时:

  • node->val <= prev,说明出现了非递增(重复或逆序),直接判false
  • 否则更新prev = node->val,继续遍历右子树。

细节:

  • prevlong long,初始化成LLONG_MIN,避免节点值可能等于INT_MIN时出错。

复杂度:

  • 时间复杂度:O(N)
  • 空间复杂度:O(H)(递归栈深度,H 为树高)

classSolution{public:boolisValidBST(TreeNode*root){longlongprev=LLONG_MIN;returninorderCheck(root,prev);}private:boolinorderCheck(TreeNode*node,longlong&prev){if(!node)returntrue;if(!inorderCheck(node->left,prev))returnfalse;if((longlong)node->val<=prev)returnfalse;prev=node->val;returninorderCheck(node->right,prev);}};

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询