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 }