addsjunior
BAN USERpublic boolean isBST(Node node) {
List<Integer> lst = new LinkedList<Integer>();
getInOrder(node, lst);
for (int i = 1; i < lst.size() - 1; i++) {
if (lst.get(i) < lst.get(i - 1)) {
return false;
}
}
return true;
}
public void getInOrder(Node node, List<Integer> values) {
if (node == null)
return;
getInOrder(node.left, values);
values.add(node.value);
getInOrder(node.right, values);
}
You are right, most implementations here will fail for the following case, returning that it is a BST:
|
8
/ \
4 10
/ \
2 11
static void add(int[] nums, int sum) {
int begin = 0, next = 0, currSum = 0;
List<Integer> res = new LinkedList<Integer>();
System.out.println(nums.toString());
do {
currSum += nums[next];
res.add(nums[next]);
if (currSum > sum) {
begin++;
next = begin;
currSum = 0;
res.clear();
} else if (currSum < sum) {
next++;
} else {
if (begin == next)
System.out.println(begin);
else
System.out.println("(" + begin + "-" + next + ")");
}
} while (begin < nums.length - 1 && next < nums.length);
}
- addsjunior January 26, 2014