在遍历方法中遇到了一些麻烦我的代码应该按顺序遍历给定的树,并且如果它正确地返回true。我通过遍历它并将元素添加到arrayList来完成此操作。我有一个方法isSorted返回1,如果数组列表排序(这是每次我添加一个数组列表元素)和0,如果不是。为了遍历错误?
它执行返回相关性1或0对应于它是否被排序的工作,但它不会在此之后停止执行。因为如果没有进行排序比可以安全地说遍历没有正确完成,但它说明是正确的。谁能帮忙?
public ArrayList<Integer> inOrderCheck = new ArrayList<Integer>();
boolean checkBST(Node root) {
if(root != null){
checkBST(root.left);
if(addToList(root.data) == 0){
return false;
}
checkBST(root.right);
}
return true;
// Integer[] inOrderArray = inOrderCheck.toArray(new Integer[inOrderCheck.size()]);
}
int addToList(int data){
//System.out.println("Initial size of inOrderCheck: " + inOrderCheck.size());
if(!(inOrderCheck.contains(data))){
// System.out.println("Adding: " + data);
inOrderCheck.add(data);
}
//System.out.println(" size of inOrderCheck after adddition: " + inOrderCheck.size());
// System.out.println("Contents of inOrderCheck: " + inOrderCheck);
// System.out.println("Result of isSorted: " + isSorted());
return isSorted();
}
int isSorted(){
int sorted = 0;
for (int i = 1; i < inOrderCheck.size(); i++) {
//System.out.println("Result of isSorted: " + inOrderCheck.get(i-1) + " "+ inOrderCheck.get(i));
if (inOrderCheck.get(i-1) < (inOrderCheck.get(i))) {
sorted = 1;
}else
sorted = 0;
}
return sorted;
}
也许你不应该忽视的布尔从递归调用'checkBST'返回。 – Eran
@Eran像什么设置它们等于一个布尔? – SJackson193
@ SJackson193如果'checkBST(root.left)'返回false,则应该返回false。 'checkBST(root.right)'相同。 – Eran