📅  最后修改于: 2023-12-03 14:55:11.208000             🧑  作者: Mango
在二叉树中,若任意节点的左子树不为空,则左子树上所有节点的值均小于它的根节点的值;若任意节点的右子树不为空,则右子树上所有节点的值均大于它的根节点的值;任意节点的左、右子树也分别为二叉树。
根据上述定义,我们可以通过遍历二叉树的方式,判断其是否为有效二叉树。下面是一个可以判断有效二叉树的示例代码:
public class Solution {
public bool IsValidBST(TreeNode root) {
if (root == null) {
return true;
}
return IsValid(root, long.MinValue, long.MaxValue);
}
private bool IsValid(TreeNode node, long min, long max) {
if (node == null) {
return true;
}
if (node.val <= min || node.val >= max) {
return false;
}
return IsValid(node.left, min, node.val) && IsValid(node.right, node.val, max);
}
}
我们首先判断当前节点是否为 null,如果是则返回 true。否则,我们递归判断它的左子树和右子树是否为有效二叉树。在递归的过程中,我们需要传递当前子树的最小值和最大值,如果当前节点的值小于等于最小值或大于等于最大值,则返回 false。
使用上述代码,我们就可以判断一个二叉树是否为有效二叉树了。
通过本文的介绍,相信大家已经了解了如何判断一个二叉树是否为有效二叉树。希望这篇文章对大家有所帮助!