缘起
二叉查找树中搜索范围:给定一棵二叉搜索树和一个范围,返回树中在此范围内的数据
样例 :
输入:{20,8,22,4,12},10,22
输出:[12,20,22]
解释:
20
/ \
8 22
/ \
4 12
它将被序列化为 {20,8,22,4,12}
[12,20,22]介于10和22之间
直接看答案:
public classSolution{
private ArrayList<Integer> results;
publicArrayListsearchRange(TreeNode root,intlow,inthigh){
results = new ArrayList<Integer>();
helper(root, low, high);
return results;
}
private void helper(TreeNode root,intlow,inthigh){
if (root == null) {
return;
}
if (root.val > low) {
helper(root.left, low, high);
}
if (root.val >= low && root.val <= high) {
results.add(root.val);
}
if (root.val < high) {
helper(root.right, low, high);
}
}
}
以上代码中的
if() {
}
if (){
}
......
如果改成
if() {
}
else if (){
}
else if() {
}
则不会AC
if 与 else if的区别
if ... if... if...为多选,选项之间不互斥。会逐个判断,如果有符合条件的,则会进入if代码块执行,直到整个方法结束;
if... else if ... else if...为单选,选项之间互斥。只要有一个符合条件,则不会再去判断下面的条件直接结束。
网友评论