1)如果是二叉排序树
在二叉排序树中查找某值,此时利用二叉排序树的性质,节点的左子树都是小于这个节点,节点的右子树都是大于这个节点的,所以从某节点node开始查找,如果在要找的值小于这个节点的值,就在左子树中查找,如果要找的值大于这个节点的值,就在该节点的右子树中查找,这里看出,最终查找后,从根节点到结束查找的节点,只有一条路径,所以二叉查找树的效率很高,如果一直找到某一个叶子节点,还没有找到,就返回false。
代码示例:
public boolean get(Node x,int data){
if(x==null) //一直找到叶子节点,还没有找到就返回false
return false;
if(data<x.data) //一条路径查找
return get(x.left,data);
else if(data>x.data)
return get(x.right,data);
else //如果找到就返回true
return true;
}
2)如果是二叉树
假设此时从节点node开始查找某值,此时要遍历二叉树的所有节点,直到找到该节点,就停止返回true,如果二叉树遍历完了还没有找到就返回false。
public boolean get(Node x,int data){
if(x==null)
return false; //找到某叶子后,还没有找到,就返回false
if(x.data==data)
return true; //如果找到了就返回true
boolean flag1 = false;
boolean flag2 = false;
flag1 = get(x.left,data); //flag1==true,表示这条路径找到了
flag2 = get(x.right,data); //flag2==true,表示这条路径找到了
return flag2||flag1; //有一条找到,就返回true
}