国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JS二叉樹非遞歸遍歷

guyan0319 / 2737人閱讀

摘要:一個二叉樹的例子先實(shí)現(xiàn)三種遍歷的遞歸算法以作比較。先序遍歷遞歸算法中序遍歷遞歸算法先遍歷到最左邊的節(jié)點(diǎn),然后輸出后序遍歷看完上面的遞歸遍歷,下面對比一下非遞歸的二叉樹遍歷。終止條件最后樹遍歷完了自然就結(jié)束后序遍歷

二叉樹的遞歸遍歷很簡單就可以實(shí)現(xiàn),二叉樹非遞歸遍歷卻想不出來?那你可以看看下面的例子。

一個二叉樹的例子

var root = {
val: 1,
left: {

val: 2,
left: {
  val: 4,
},
right:{
  val:5
}

},
right: {

val: 3,
left: {
  val: 6
},
right: {
  val: 7
}

}
}
先實(shí)現(xiàn)三種遍歷的遞歸算法以作比較。

先序遍歷遞歸算法

function DLR(root){

if(root!=null){
    console.log(root.val);
    DLR(root.left);
    DLR(root.right);
}

}
DLR(root)//1,2,4,5,3,6,7

中序遍歷遞歸算法

function LDR(root){

if(root!=null){
    LDR(root.left);//先遍歷到最左邊的節(jié)點(diǎn),然后輸出
    console.log(root.val);
    LDR(root.right);
}

}
LDR(root)//4,2,5,1,6,3,7

后序遍歷

function LRD(root){

if(node!=null){
    LRD(root.left);
    LRD(root.right);
    console.log(root.val);
}

}
LRD(root)//4,5,2,6,7,3,1

看完上面的遞歸遍歷,下面對比一下非遞歸的二叉樹遍歷。你會發(fā)現(xiàn)遞歸真心簡單。

非遞歸前序遍歷

function DLR(root){

var arr=[],res=[];
if(root!=null){
    arr.push(root);
}
while(arr.length!=0){
    var temp=arr.pop();
    res.push(temp.val);
    //這里先放右邊再放左邊是因?yàn)槿〕鰜淼捻樞蛳喾?    if(temp.right!=null){
        arr.push(temp.right);
    }
    if(temp.left!=null){
        arr.push(temp.left);
    }
}
return res;

}

DLR(root)//1,2,4,5,3,6,7

非遞歸中序遍歷

//先把左邊的,全部放進(jìn)arr再輸出,處理右邊的。
function LDR(root){

var arr=[],res=[];
while(true){
    while(root!=null){
        arr.push(root);
        root=root.left;
    }
    //終止條件:最后樹遍歷完了自然就結(jié)束
    if(arr.length==0){
        break;
    }
    var temp=arr.pop();
    res.push(temp.val);
    root=temp.right;
}
return res;

}
LDR(root)//4,2,5,1,6,3,7

后序遍歷

function LRD(root){

var arr=[],res=[];
arr.push(root);
while(arr.length!=0){
    var p=arr.pop();
    res.push(p.val);
    if(p.left!=null){
        arr.push(p.left);
    }
    if(p.right!=null){
        arr.push(p.right);
    }
}
return res.reverse();

}
LRD(root)//4,5,2,6,7,3,1

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/88416.html

相關(guān)文章

  • 叉樹遍歷小結(jié)

    摘要:對于任一重合元素,保證所在兩個局部遍歷有序,保證實(shí)現(xiàn)整體遍歷有序重合元素所在局部局部全部有序,遍歷該元素并出棧局部未全部有序,將未有序局部元素全部入棧。 二叉樹遍歷小結(jié) 聲明 文章均為本人技術(shù)筆記,轉(zhuǎn)載請注明出處: [1] https://segmentfault.com/u/yzwall [2] blog.csdn.net/j_dark/ 0 二叉樹遍歷概述 二叉樹遍歷:按照既定序,...

    vvpale 評論0 收藏0
  • 《學(xué)習(xí)JavaScript數(shù)據(jù)結(jié)構(gòu)與算法》(第8章)(平衡叉樹代碼實(shí)現(xiàn))

    摘要:平衡二叉樹代碼實(shí)現(xiàn)根節(jié)點(diǎn)插入節(jié)點(diǎn)樹為空樹不為空比較小于往左走大于往右走空樹樹非空自平衡樹插入新節(jié)點(diǎn)向左走向左子樹拆入新節(jié)點(diǎn),且節(jié)點(diǎn)的值小于其左子節(jié)點(diǎn)時,應(yīng)該進(jìn)行旋轉(zhuǎn)。 平衡二叉樹JS代碼實(shí)現(xiàn) var Tree = function() { var Node = function(value) { this.value = value; this....

    isLishude 評論0 收藏0
  • js叉樹的深度遍歷與廣度遍歷(遞歸實(shí)現(xiàn)與非遞歸實(shí)現(xiàn))

    摘要:樹中結(jié)點(diǎn)的最大層次稱為樹的深度或高度。二叉樹有深度遍歷和廣度遍歷,深度遍歷有前序中序和后序三種遍歷方法。二叉樹的前序遍歷可以用來顯示目錄結(jié)構(gòu)等中序遍歷可以實(shí)現(xiàn)表達(dá)式樹,在編譯器底層很有用后序遍歷可以用來實(shí)現(xiàn)計算目錄內(nèi)的文件及其信息等。 樹的簡介 棧、隊(duì)列、鏈表等數(shù)據(jù)結(jié)構(gòu),都是順序數(shù)據(jù)結(jié)構(gòu)。而樹是非順序數(shù)據(jù)結(jié)構(gòu)。樹型結(jié)構(gòu)是一類非常重要的非線性結(jié)構(gòu)。直觀地,樹型結(jié)構(gòu)是以分支關(guān)系定義的層次結(jié)...

    Yuanf 評論0 收藏0
  • JS遞歸叉樹遍歷

    摘要:貌似大部分語言中的遞歸都差不多,之所以在標(biāo)題加是因?yàn)樗蚜讼潞蟾杏X網(wǎng)上用來描述這概念的不多,簡單地說遞歸就是函數(shù)調(diào)用自己的過程。 貌似大部分語言中的遞歸都差不多, 之所以在標(biāo)題加JS是因?yàn)樗蚜讼潞蟾杏X網(wǎng)上用js來描述這概念的不多, 簡單地說遞歸就是函數(shù)調(diào)用自己的過程。下面的栗子可以很直觀地展示遞歸的執(zhí)行過程: function rec(x){ if(x!==1){ console....

    church 評論0 收藏0
  • 叉樹遞歸遍歷JS實(shí)現(xiàn))

    摘要:本文討論二叉樹的遍歷,對節(jié)點(diǎn)的訪問通過打印節(jié)點(diǎn)的值體現(xiàn)出來。從二叉樹的根節(jié)點(diǎn)出發(fā),遍歷可分為三個環(huán)節(jié)訪問節(jié)點(diǎn)打印節(jié)點(diǎn)的值遍歷節(jié)點(diǎn)的左子樹遍歷節(jié)點(diǎn)的右子樹不同環(huán)節(jié)執(zhí)行的先后順序產(chǎn)生了不同的遍歷方式。至于二叉樹的非遞歸遍歷,且聽下回分解。 相關(guān)概念 「樹的遍歷」 指按照一定規(guī)則不重復(fù)地訪問樹中所有節(jié)點(diǎn)的過程。「訪問」指針對節(jié)點(diǎn)的操作,如打印節(jié)點(diǎn)的值,更新節(jié)點(diǎn)的值等。 本文討論二叉樹的遍歷,...

    ethernet 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<