【发布时间】:2018-01-24 09:17:50
【问题描述】:
我正在尝试检查给定的二叉树是否是二叉搜索树。我想要做的是执行二叉树的中序遍历并将当前元素与前一个元素进行比较。如果当前元素更大,我们会继续检查,否则给定的树是无效的。
int prev=0;
public int isValidBST(TreeNode A) {
if(A==null)
return 1;
isValidBST(A.left);
// System.out.println("val "+A.val);
if(A.val<=prev)
return 0;
// else if(A!=null){
prev=A.val;
//System.out.println("prev "+prev);
isValidBST(A.right);
if(isValidBST(A.right)==1&&isValidBST(A.left)==1)
return 1;
return 0;
}
这就是我写的代码。我在这里做错了什么?
【问题讨论】:
-
你为什么使用 0/1 而不是布尔值?
-
为左右调用两次 isValidBST 势必会对您的全局变量造成严重破坏。
-
您能否提供一个示例,说明您的代码没有产生正确的输出(换句话说,MCVE)?
标签: java algorithm data-structures tree binary-search-tree