日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

使用javascript模拟常见数据结构(四)

發(fā)布時間:2023/12/1 javascript 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用javascript模拟常见数据结构(四) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

七、樹

  樹是一種非線性的分層的數(shù)據(jù)結(jié)構(gòu),在現(xiàn)實生活中比較常見的例子比如家譜和公司的組織架構(gòu)圖,如下所示:

  

  一個樹結(jié)構(gòu)存在著一系列的父子結(jié)構(gòu),并且有著一個根節(jié)點,這種結(jié)構(gòu)本質(zhì)上表明了一對多的關(guān)系。

  

  那,如同上面這樣的結(jié)構(gòu),一個節(jié)點可以有多個子節(jié)點,但最多只能有一個父節(jié)點,如果每個節(jié)點的子節(jié)點數(shù)都不大于2,那么我們可以把這樣一棵樹叫做二叉樹。而如果這棵樹的左側(cè)的節(jié)點均小于其根節(jié)點,而右側(cè)的節(jié)點都大于根節(jié)點,那么我們管這樣的一棵樹叫做搜索二叉樹(BST)。

  我們可以用以下js代碼構(gòu)建二叉搜索樹:

  

1 function BinarySearchTree() { 2 var Node = function(key){ 3 this.key = key; 4 this.left = null; 5 this.right = null; 6 }; 7 var root = null; 8 }

  嗯嗯,其實就如同下圖所示:

  

  嗯,老慣例,還是有一些方法需要介紹,下面繼續(xù)貼一些代碼,大家看到名字其實就基本知道是干嘛的了。

  

var insertNode = function(node, newNode){if (newNode.key < node.key){ if (node.left === null){ node.left = newNode; } else {insertNode(node.left, newNode);}} else {if (node.right === null){ node.right = newNode;} else {insertNode(node.right, newNode);}} };

  嗯,上面是插入的方法,用到了遞歸,下面說幾個遍歷的方法。

var inOrderTraverseNode = function (node, callback) {if (node !== null) { inOrderTraverseNode(node.left, callback); callback(node.key); inOrderTraverseNode(node.right, callback); } }

  這個是中序遍歷,其遍歷過程大概如下圖所示:

  

嗯,可以看到,這樣遍歷完了之后是從下到大的,可以用于排序。

然后,先序遍歷

  

var preOrderTraverseNode = function (node, callback) {if (node !== null) {callback(node.key); preOrderTraverseNode(node.left, callback); preOrderTraverseNode(node.right, callback); } }

?

  恩,然后這個就是先序遍歷~最后一種就是后序遍歷,其實就是最后來訪問根節(jié)點。

  

var postOrderTraverseNode = function (node, callback) {if (node !== null) {postOrderTraverseNode(node.left, callback); //{1}postOrderTraverseNode(node.right, callback); //{2}callback(node.key); //{3} } };

?

  

  

轉(zhuǎn)載于:https://www.cnblogs.com/shicongbuct/p/6822158.html

總結(jié)

以上是生活随笔為你收集整理的使用javascript模拟常见数据结构(四)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。