题解 | #判断是不是二叉搜索树#
判断是不是二叉搜索树
https://www.nowcoder.com/practice/a69242b39baf45dea217815c7dedb52b
using System;
using System.Collections.Generic;
/*
public class TreeNode
{
public int val;
public TreeNode left;
public TreeNode right;
public TreeNode (int x)
{
val = x;
}
}
*/
class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param root TreeNode类
* @return bool布尔型
*/
public bool isValidBST (TreeNode root) {
// write code here
if (root == null) return false;
if (root.left == null && root.right == null) return true;
if (root.left != null && root.right == null) {
return root.left.val < root.val && isValidBST(root.left);
}
if (root.right != null && root.left == null) {
return root.right.val > root.val && isValidBST(root.right);
}
if (root.left.val < root.val && root.right.val > root.val) {
if (root.left.right != null && root.right.left == null) {
return root.val > root.left.right.val && isValidBST(root.left) &&
isValidBST(root.right);
} else if (root.left.right == null && root.right.left != null)
return root.val < root.right.left.val && isValidBST(root.left) &&
isValidBST(root.right);
else if (root.left.right == null && root.right.left == null)
return isValidBST(root.left) && isValidBST(root.right);
else
return root.val > root.left.right.val && root.val < root.right.left.val &&
isValidBST(root.left) && isValidBST(root.right);
}
return false;
}
}
#判断一个二叉树是否是二叉搜索#
美团成长空间 2667人发布
