亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

使用javascript實(shí)現(xiàn)排序二叉樹(shù)(1)

Caicloud / 2787人閱讀

摘要:使用實(shí)現(xiàn)排序二叉樹(shù)排序二叉樹(shù)的定義二叉樹(shù)的基礎(chǔ)上,左節(jié)點(diǎn)比父節(jié)點(diǎn)要小,右節(jié)點(diǎn)比父節(jié)點(diǎn)要大的二叉樹(shù),叫排序二叉樹(shù)。下期內(nèi)容實(shí)現(xiàn)排序二叉樹(shù)的中序前序后續(xù)遍歷實(shí)現(xiàn)二叉樹(shù)的節(jié)點(diǎn)查找功能實(shí)現(xiàn)排序二叉樹(shù)的刪除節(jié)點(diǎn)功能應(yīng)用排序二叉樹(shù)實(shí)現(xiàn)一個(gè)小游戲

使用javascript實(shí)現(xiàn)排序二叉樹(shù)(1)

排序二叉樹(shù)的定義: 二叉樹(shù)的基礎(chǔ)上,左節(jié)點(diǎn)比父節(jié)點(diǎn)要小,右節(jié)點(diǎn)比父節(jié)點(diǎn)要大的二叉樹(shù),叫排序二叉樹(shù)。

下面直接進(jìn)入到我們的javascript代碼 定義 排序二叉樹(shù)的過(guò)程

/*
    分析二叉樹(shù)的結(jié)構(gòu)得出,二叉樹(shù)由節(jié)點(diǎn)構(gòu)成,每個(gè)節(jié)點(diǎn)又有自己的左右子樹(shù)。
    并且有一個(gè)根節(jié)點(diǎn)
*/
function BinaryTree(){
  var root = null; //根節(jié)點(diǎn)默認(rèn)為null
  /*
    1.節(jié)點(diǎn)類型的構(gòu)造函數(shù),默認(rèn)左右子樹(shù)都為空
  */
  function Node(key){
    this.key = key;
    this.left = null;
    this.right = null;
  }
  /*
      2.根據(jù)排序二叉樹(shù)的規(guī)律,我們定義一個(gè)插入節(jié)點(diǎn)的方法,去填充排序二叉樹(shù)。該方法是BinaryTree的一個(gè)方法,需要綁定在this上讓其他調(diào)用者能調(diào)用。而不是作為內(nèi)部方法。
  */
  this.insert = function(key){     
    var newNode = new Node(key);
    if(root === null){
       root = newNode;
    }else{
       insertNode(root,newNode)
    }
  }
  var insertNode = function(node,newNode){
    if(newNode.key < node.key){
      if(node.left === null){
         node.left = newNode;
      }else{
         insertNode(node.left,newNode)
      }
    }else{
      if(newNode.key > node.key){
        if(node.right === null){
          node.right = newNode;
        }else{
          insertNode(node.right,newNode)
        }
      }
    }
  }
}

/*
    測(cè)試:查看是否報(bào)錯(cuò),具體的流程邏輯可以通過(guò)打斷點(diǎn)來(lái)判斷是否與自己設(shè)想的一樣。
                      8
                   7     9
                 3         12
               2   4
                     6
                   5
*/
var nodes = [8,7,3,4,6,5,2,9,12]
var binaryTree = new BinaryTree();
nodes.forEach((item)=>{
    binaryTree.insert(item)
})

通過(guò)斷點(diǎn)調(diào)試,最后得到的一個(gè)二叉樹(shù)應(yīng)該是這樣的。也是符合二叉排序樹(shù)的定義的。

重點(diǎn)

分析數(shù)據(jù)結(jié)構(gòu)的一個(gè)規(guī)律,從而能夠定義出節(jié)點(diǎn)類型中有哪些屬性

方法不要都綁定在 this 上面,因?yàn)橛行┖瘮?shù)是不需要暴露出去的,而是內(nèi)部使用的。

我覺(jué)得讓我收獲比較大的是這里的 insert 這個(gè)函數(shù)中又調(diào)用一個(gè) insertNode 的函數(shù),因?yàn)槭聦?shí)上真正的插入節(jié)點(diǎn)是需要兩個(gè)參數(shù)的,一個(gè)父節(jié)點(diǎn),一個(gè)要插入的節(jié)點(diǎn)。所以會(huì)需要遞歸調(diào)用,如果不依靠 insertNode 直接用 insert方法 去遞歸是沒(méi)法遞歸的。因?yàn)橥獠繅焊@取不到 root 。之前還想著 只用 一個(gè)方法就實(shí)現(xiàn)插入遞歸 ,但是確實(shí)不行。

下期內(nèi)容

實(shí)現(xiàn)排序二叉樹(shù)的 中序 前序 后續(xù) 遍歷

實(shí)現(xiàn)二叉樹(shù)的節(jié)點(diǎn)查找功能

實(shí)現(xiàn)排序二叉樹(shù)的 刪除節(jié)點(diǎn)功能

應(yīng)用排序二叉樹(shù)實(shí)現(xiàn)一個(gè)小游戲

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/97034.html

相關(guān)文章

  • 使用javascript實(shí)現(xiàn)排序叉樹(shù)(2)

    摘要:使用實(shí)現(xiàn)排序二叉樹(shù)上一篇文章我們構(gòu)造了基本的一個(gè)排序二叉樹(shù)的數(shù)據(jù)結(jié)構(gòu),但是僅僅是定義了一個(gè)方法去創(chuàng)建二叉排序樹(shù),今天我們來(lái)給我們的數(shù)據(jù)結(jié)構(gòu)添加一些遍歷的功能。 使用javascript實(shí)現(xiàn)排序二叉樹(shù)(2) 上一篇文章我們構(gòu)造了基本的一個(gè)排序二叉樹(shù)的數(shù)據(jù)結(jié)構(gòu),但是僅僅是定義了一個(gè)insert方法去創(chuàng)建二叉排序樹(shù),今天我們來(lái)給我們的數(shù)據(jù)結(jié)構(gòu)添加一些遍歷的功能。 二叉樹(shù)的三種遍歷方式(以根節(jié)...

    susheng 評(píng)論0 收藏0
  • JavaScript 數(shù)據(jù)結(jié)構(gòu)與算法之美 - 非線性表中的樹(shù)、堆是干嘛用的 ?其數(shù)據(jù)結(jié)構(gòu)是怎樣的 ?

    摘要:筆者寫(xiě)的數(shù)據(jù)結(jié)構(gòu)與算法之美系列用的語(yǔ)言是,旨在入門數(shù)據(jù)結(jié)構(gòu)與算法和方便以后復(fù)習(xí)。非線性表中的樹(shù)堆是干嘛用的其數(shù)據(jù)結(jié)構(gòu)是怎樣的希望大家?guī)е@兩個(gè)問(wèn)題閱讀下文。其中,前中后序,表示的是節(jié)點(diǎn)與它的左右子樹(shù)節(jié)點(diǎn)遍歷訪問(wèn)的先后順序。 showImg(https://segmentfault.com/img/bVbuvnj?w=900&h=250); 1. 前言 想學(xué)好前端,先練好內(nèi)功,內(nèi)功不行,...

    singerye 評(píng)論0 收藏0
  • 學(xué)習(xí)javascript數(shù)據(jù)結(jié)構(gòu)(四)——樹(shù)

    摘要:原文博客地址學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)四樹(shù)知乎專欄簡(jiǎn)書(shū)專題前端進(jìn)擊者知乎前端進(jìn)擊者簡(jiǎn)書(shū)博主博客地址的個(gè)人博客人之所能,不能兼?zhèn)?,棄其所短,取其所長(zhǎng)。通常子樹(shù)被稱作左子樹(shù)和右子樹(shù)。敬請(qǐng)期待數(shù)據(jù)結(jié)構(gòu)篇最后一篇文章學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)五圖參考文章樹(shù)數(shù)據(jù)結(jié)構(gòu)二叉樹(shù) 前言 總括: 本文講解了數(shù)據(jù)結(jié)構(gòu)中的[樹(shù)]的概念,盡可能通俗易懂的解釋樹(shù)這種數(shù)據(jù)結(jié)構(gòu)的概念,使用javascript實(shí)現(xiàn)了樹(shù),如有紕漏,歡迎批評(píng)指正。 ...

    Dean 評(píng)論0 收藏0
  • 數(shù)據(jù)結(jié)構(gòu)與算法:叉樹(shù)算法

    摘要:因此,根據(jù)題目給出的先序遍歷和中序遍歷,可以畫(huà)出二叉樹(shù)選參考數(shù)據(jù)結(jié)構(gòu)與算法描述實(shí)現(xiàn)二叉樹(shù)算法淺談數(shù)據(jù)結(jié)構(gòu)二叉樹(shù)慕課網(wǎng)實(shí)現(xiàn)二叉樹(shù)算法前端樹(shù)控件騰訊軟件開(kāi)發(fā)面試題 內(nèi)容銜接上一章 數(shù)據(jù)結(jié)構(gòu)與算法:常見(jiàn)排序算法 內(nèi)容提要 什么是樹(shù)   - 為什么使用樹(shù) 二叉樹(shù) 二叉查找樹(shù) 紅黑樹(shù) B、B+樹(shù) 堆 伸展樹(shù) 樹(shù) 可以點(diǎn)擊鏈接感受下筆者用d3.js畫(huà)的tree https://codepen...

    Little_XM 評(píng)論0 收藏0
  • JavaScript實(shí)現(xiàn)簡(jiǎn)單二叉查找樹(shù)

    摘要:二叉查找樹(shù)二叉查找樹(shù)也叫二叉搜索樹(shù)它只允許我們?cè)谧蠊?jié)點(diǎn)存儲(chǔ)比父節(jié)點(diǎn)更小的值,右節(jié)點(diǎn)存儲(chǔ)比父節(jié)點(diǎn)更大的值,上圖展示的就是一顆二叉查找樹(shù)。 前兩天接到了螞蟻金服的面試電話,面試官很直接,上來(lái)就拋出了三道算法題。。。 其中有一道關(guān)于二叉樹(shù)實(shí)現(xiàn)中序遍歷的,當(dāng)時(shí)沒(méi)回答好,所以特意學(xué)習(xí)了一把二叉樹(shù)的知識(shí),行文記錄總結(jié)。 二叉樹(shù)&二叉查找樹(shù) showImg(https://segmentfault....

    frank_fun 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<