每天一道算法题验证二叉搜索树(深度优先搜索)
Posted 码农之屋
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每天一道算法题验证二叉搜索树(深度优先搜索)相关的知识,希望对你有一定的参考价值。
是新朋友吗?记得先点蓝字关注我哦~
深度优先搜索算法知识普及
题目描述
节点的左子树只包含小于当前节点的数。
节点的右子树只包含大于当前节点的数。
所有左子树和右子树自身必须也是二叉搜索树。
示例 1: 输入: 2 / 1 3 输出: true
示例 2: 输入: 5 / 1 4 / 3 6 输出: false 解释: 输入为: [5,1,4,null,null,3,6]。 根节点的值为 5 ,但是其右子节点值为 4 。
解决思路
-
时间复杂度 : O(N) -
空间复杂度 : O(N)
Java代码实现
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) {
val = x;
}
}
public class Solution {
public boolean isValidBST(TreeNode root) {
return helper(root, null, null);
}
private boolean helper(TreeNode root, Integer lower, Integer higher) {
if (root == null) {
return true;
}
int value = root.val;
if (lower != null && value <= lower) {
return false;
}
if (higher != null && value >= higher) {
return false;
}
if (!helper(root.right, value, higher)) {
return false;
}
if (!helper(root.left, lower, value)) {
return false;
}
return true;
}
}
看完本文有收获?请分享给更多的人
在技术成长的路上,让我们一起进步吧
以上是关于每天一道算法题验证二叉搜索树(深度优先搜索)的主要内容,如果未能解决你的问题,请参考以下文章
小Y学算法⚡️每日LeetCode打卡⚡️——28.二叉树的最大深度