用js實(shí)現(xiàn)二叉樹的遍歷

二叉樹的常用遍歷為前序遍歷,中序遍歷,后序遍歷,三種遍歷方法僅僅是交換了代碼的運(yùn)行順序而已,代碼如下:

function Node(data,left,right){
    this.data=data;
    this.left=left;
    this.right=right;
}

function Tree(){
    this.root=null;
}

Tree.prototype={

    //創(chuàng)建二叉樹
    create: function(){
        var b=new Node(2,new Node(4),new Node(5));
        var c=new Node(3,new Node(6),new Node(7));
        this.root=new Node(1,b,c);
    },

    //前序遍歷
    preTravel: function(root){
        if(root==null){
            return;
        }

        console.log(root.data);
        this.preTravel(root.left);
        this.preTravel(root.right);
    },

    //中序遍歷
    middleTravel: function(root){
        if(root==null){
            return;
        }

        this.middleTravel(root.left);
        console.log(root.data);
        this.middleTravel(root.right);
    },

    //后序遍歷
    postTravel: function(root){
        if(root==null){
            return;
        }

        this.middleTravel(root.left);
        this.middleTravel(root.right);
        console.log(root.data);
    }    
}

一開始的時(shí)候,準(zhǔn)備為這些遍歷方法傳入一個(gè)默認(rèn)參數(shù)this.root結(jié)果發(fā)現(xiàn)會(huì)導(dǎo)致死循環(huán),最后發(fā)現(xiàn)是因?yàn)?,后面?huì)將undefined作為參數(shù)傳入,此時(shí)會(huì)自動(dòng)使用默認(rèn)參數(shù),進(jìn)入死循環(huán)。
另外,定義原型方法時(shí),調(diào)用另一個(gè)原型方法時(shí),要在this作用域中查找。
測(cè)試代碼如下:

var tree=new Tree();
tree.create();
tree.preTravel(tree.root);
tree.middleTravel(tree.root);
tree.postTravel(tree.root);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,568評(píng)論 19 139
  • 工廠模式類似于現(xiàn)實(shí)生活中的工廠可以產(chǎn)生大量相似的商品,去做同樣的事情,實(shí)現(xiàn)同樣的效果;這時(shí)候需要使用工廠模式。簡(jiǎn)單...
    舟漁行舟閱讀 8,130評(píng)論 2 17
  • 繼承 一、混入式繼承 二、原型繼承 利用原型中的成員可以被和其相關(guān)的對(duì)象共享這一特性,可以實(shí)現(xiàn)繼承,這種實(shí)現(xiàn)繼承的...
    magic_pill閱讀 1,128評(píng)論 0 3
  • 明早小區(qū)幼兒園報(bào)名,沒有人能體會(huì)今夜我的感受!為什么八年來(lái)你只知道次次、事事考慮別人的感受?!怕傷到別人,可是人家...
    蕭然w云卷云舒閱讀 184評(píng)論 0 0
  • 7.11 星期二 晴(88) 回到家兒子就開心的告訴我,今天的作業(yè)已經(jīng)完成了,讓我陪著他玩一會(huì),告訴兒...
    王界程閱讀 242評(píng)論 0 0

友情鏈接更多精彩內(nèi)容