前面文章介紹了二叉樹的遍歷,現(xiàn)在談?wù)勗诙鏄渲羞M(jìn)行查找。對二叉查找樹來說,一般有以下三類查找:最大值,最小值和給定值。
查找最小值就是遍歷左子樹,直到找到最后一個結(jié)點,這是因為在二叉查找樹中較小的值總是在左子節(jié)點上的。
代碼如下:
function getMin(){//查找最小值
var current=this.root;//指向根節(jié)點
while(current.left!=null){
current=current.left;
}
return current.data;
}
同理可得查找最大值的代碼如下:
function getMax(){//查找最大值
var current=this.root;
while(current.right!=null){//如果未找到右結(jié)點則一直找
current=current.right;
}
return current.data;
}
而在二叉查找樹中查找指定值也不難,就是依次判斷節(jié)點值的查找值的大小,如果節(jié)點值小,則繼續(xù)往右查找,如果節(jié)點值大,則繼續(xù)往左查找,代碼如下:
function find(data){//查找某個值
var current=this.root;
while(current!=null){
if(current.data==data){
return current;
}else if(current.data>data){//如果節(jié)點值比尋找值大,則往左找
current=current.left;
}else{//如果節(jié)點值比尋找值小,則往右找
current=current.right;
}
}//如果沒找到則返回null