JavaScript數(shù)據(jù)結(jié)構(gòu)之二叉樹(shù)的查找算法示例
本文實(shí)例講述了JavaScript數(shù)據(jù)結(jié)構(gòu)之二叉樹(shù)的查找算法。分享給大家供大家參考,具體如下:
前面文章介紹了二叉樹(shù)的遍歷,現(xiàn)在談?wù)勗诙鏄?shù)中進(jìn)行查找。對(duì)二叉查找樹(shù)來(lái)說(shuō),一般有以下三類查找:最大值,最小值和給定值。
查找最小值就是遍歷左子樹(shù),直到找到最后一個(gè)結(jié)點(diǎn),這是因?yàn)樵诙娌檎覙?shù)中較小的值總是在左子節(jié)點(diǎn)上的。
代碼如下:
function getMin(){//查找最小值
var current=this.root;//指向根節(jié)點(diǎn)
while(current.left!=null){
current=current.left;
}
return current.data;
}
同理可得查找最大值的代碼如下:
function getMax(){//查找最大值
var current=this.root;
while(current.right!=null){//如果未找到右結(jié)點(diǎn)則一直找
current=current.right;
}
return current.data;
}
而在二叉查找樹(shù)中查找指定值也不難,就是依次判斷節(jié)點(diǎn)值的查找值的大小,如果節(jié)點(diǎn)值小,則繼續(xù)往右查找,如果節(jié)點(diǎn)值大,則繼續(xù)往左查找,代碼如下:
function find(data){//查找某個(gè)值
var current=this.root;
while(current!=null){
if(current.data==data){
return current;
}else if(current.data>data){//如果節(jié)點(diǎn)值比尋找值大,則往左找
current=current.left;
}else{//如果節(jié)點(diǎn)值比尋找值小,則往右找
current=current.right;
}
}//如果沒(méi)找到則返回null
return null;
}
更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》、《JavaScript排序算法總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》及《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
- JS實(shí)現(xiàn)二叉查找樹(shù)的建立以及一些遍歷方法實(shí)現(xiàn)
- JavaScript數(shù)據(jù)結(jié)構(gòu)之二叉查找樹(shù)的定義與表示方法
- JavaScript數(shù)據(jù)結(jié)構(gòu)與算法之二叉樹(shù)實(shí)現(xiàn)查找最小值、最大值、給定值算法示例
- JavaScript實(shí)現(xiàn)二叉樹(shù)定義、遍歷及查找的方法詳解
- JS實(shí)現(xiàn)的二叉樹(shù)算法完整實(shí)例
- JavaScript實(shí)現(xiàn)二叉樹(shù)的先序、中序及后序遍歷方法詳解
- javascript實(shí)現(xiàn)二叉樹(shù)遍歷的代碼
- Javascript實(shí)現(xiàn)從小到大的數(shù)組轉(zhuǎn)換成二叉搜索樹(shù)
- JavaScript數(shù)據(jù)結(jié)構(gòu)之二叉樹(shù)的刪除算法示例
- JavaScript實(shí)現(xiàn)的DOM樹(shù)遍歷方法詳解【二叉DOM樹(shù)、多叉DOM樹(shù)】
- JavaScript數(shù)據(jù)結(jié)構(gòu)之二叉樹(shù)的遍歷算法示例
- JS中的算法與數(shù)據(jù)結(jié)構(gòu)之二叉查找樹(shù)(Binary Sort Tree)實(shí)例詳解
相關(guān)文章
JavaScript實(shí)現(xiàn)標(biāo)題欄文字輪播效果代碼
這篇文章主要介紹了JavaScript實(shí)現(xiàn)標(biāo)題欄文字輪播效果代碼,涉及JavaScript基于時(shí)間函數(shù)及流程控制操作標(biāo)題欄文字的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-10-10
artDialog+plupload實(shí)現(xiàn)多文件上傳
這篇文章主要介紹了artDialog+plupload實(shí)現(xiàn)多文件上傳的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-07-07
div失去焦點(diǎn)事件實(shí)現(xiàn)思路
blur只是針對(duì)form表單控件的,而對(duì)于 span , div , li 之類的,則沒(méi)辦法觸發(fā)它們的動(dòng)作,本文有個(gè)示例,看看是怎么實(shí)現(xiàn)的2014-04-04
JS關(guān)閉窗口或JS關(guān)閉頁(yè)面的幾種代碼分享
這篇文章介紹了JS關(guān)閉窗口或JS關(guān)閉頁(yè)面的幾種代碼,有需要的朋友可以參考一下2013-10-10
javascript 動(dòng)態(tài)修改css樣式方法匯總(四種方法)
為了達(dá)到某種特殊的效果我們需要用Javascript動(dòng)態(tài)的去更改某一個(gè)標(biāo)簽的Css屬性,如何動(dòng)態(tài)修改css樣式呢?面對(duì)這個(gè)問(wèn)題,小編帶領(lǐng)大家來(lái)解決javascript動(dòng)態(tài)修改css樣式,小伙伴們都快來(lái)學(xué)習(xí)吧2015-08-08

