📜  是否有效二叉树 - C# (1)

📅  最后修改于: 2023-12-03 14:55:11.208000             🧑  作者: Mango

是否有效二叉树 - C#

在二叉树中,若任意节点的左子树不为空,则左子树上所有节点的值均小于它的根节点的值;若任意节点的右子树不为空,则右子树上所有节点的值均大于它的根节点的值;任意节点的左、右子树也分别为二叉树。

根据上述定义,我们可以通过遍历二叉树的方式,判断其是否为有效二叉树。下面是一个可以判断有效二叉树的示例代码:

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。

使用上述代码,我们就可以判断一个二叉树是否为有效二叉树了。

总结

通过本文的介绍,相信大家已经了解了如何判断一个二叉树是否为有效二叉树。希望这篇文章对大家有所帮助!