麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > JavaScript > 正文

javascript數據結構之二叉搜索樹實現方法

2019-11-20 11:10:03
字體:
來源:轉載
供稿:網友

本文實例講述了javascript二叉搜索樹實現方法。分享給大家供大家參考,具體如下:

二叉搜索樹顧名思義,樹上每個節點最多只有二根分叉;而且左分叉節點的值 < 右分叉節點的值

特點插入節點、找最大/最小節點、節點值排序 非常方便

二叉搜索樹-javascript實現

<script type="text/javascript">// <![CDATA[ //打印輸出 function println(msg) {  document.write(msg + " "); } //節點類 var Node = function (v) {  this.data = v; //節點值  this.left = null; //左節點  this.right = null; //右節點 } //二叉搜索樹類 var BinarySearchTree = function () {  this.root = null; //初始化時,根節點為空  //插入節點  //參數:v 為節點的值  this.insert = function (v) {   var newNode = new Node(v);   if (this.root == null) {    //樹為空時,新節點,直接成為根節點    this.root = newNode;    return;   }   var currentNode = this.root; //工作“指針”節點(從根開始向下找)   var parentNode = null;   while (true) {    parentNode = currentNode;    if (v < currentNode.data) {     //當前節點的值 > 目標節點的值          //應該向左插,工作節點移到左節點     currentNode = currentNode.left;     if (currentNode == null) {      //沒有左節點,則新節點,直接成為左節點      parentNode.left = newNode;      return; //退出循環     }    }    else {     //否則向右插,工作節點移到右節點     currentNode = currentNode.right;     if (currentNode == null) {      parentNode.right = newNode;      return;     }    }   }  }  //查找最小節點  this.min = function () {   var p = this.root; //工作節點    while (p != null && p.left != null) {    p = p.left;   }   return p;  }  //查找最大節點  this.max = function () {   var p = this.root; //工作節點    while (p != null && p.right != null) {    p = p.right;   }   return p;  }  //中序遍歷  this.inOrder = function (rootNode) {   if (rootNode != null) {    this.inOrder(rootNode.left); //先左節點    println(rootNode.data); //再根節點    this.inOrder(rootNode.right); //再右節點   }  }  //先序遍歷  this.preOrder = function (rootNode) {   if (rootNode != null) {    println(rootNode.data); //先根    this.preOrder(rootNode.left); //再左節點    this.preOrder(rootNode.right); //再右節點   }  }  //后序遍歷  this.postOrder = function (rootNode) {   if (rootNode != null) {    this.postOrder(rootNode.left); //先左節點    this.postOrder(rootNode.right); //再右節點    println(rootNode.data); //再根節點   }  } } //以下是測試 var bTree = new BinarySearchTree(); //《沙特.算法設計技巧與分析》書上圖3.9 左側的樹 bTree.insert(6); bTree.insert(3); bTree.insert(8); bTree.insert(1); bTree.insert(4); bTree.insert(9); println('中序遍歷:') bTree.inOrder(bTree.root); println("<br/>"); println("先序遍歷:"); bTree.preOrder(bTree.root); println("<br/>"); println("后序遍歷:"); bTree.postOrder(bTree.root); println("<br/>"); var minNode = bTree.min(); println("最小節點:" + (minNode == null ? "不存在" : minNode.data)); println("<br/>"); var maxNode = bTree.max(); println("最大節點:" + (maxNode == null ? "不存在" : maxNode.data));// ]]></script><!--中序遍歷: 1 3 4 6 8 9 <br> 先序遍歷: 6 3 1 4 8 9 <br> 后序遍歷: 1 4 3 9 8 6 <br> 最小節點:1 <br> 最大節點:9-->

輸出結果:

中序遍歷: 1 3 4 6 8 9 先序遍歷: 6 3 1 4 8 9 后序遍歷: 1 4 3 9 8 6 最小節點:1 最大節點:9

希望本文所述對大家JavaScript程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美成人精品欧美一级乱黄 | 色屁屁xxxxⅹ在线视频 | 神马久久精品综合 | 91,视频免费看| 毛片在哪里看 | 羞羞视频免费视频欧美 | 一区二区三区视频播放 | 快播av在线 | 国产高潮好爽受不了了夜色 | 亚洲欧美国产精品va在线观看 | 狠狠操电影 | 色中射 | 综合在线一区 | 国产一级毛片不卡 | 成人免费毛片片v | 久久情爱网 | 久久av一区二区 | 久色网站 | ⅴideo裸体秀hd | 国产精品成人一区二区三区吃奶 | 国产精品一区二区羞羞答答 | a视频在线免费观看 | 国产精品久久久久久久久久 | 九九视屏| 成人av一二三区 | 亚洲欧美国产高清 | 欧日韩在线视频 | 黑人日比| 久久久www成人免费精品 | av在线免费网址 | 九九视屏 | 欧美另类综合 | 毛片118极品美女写真 | 欧美精品亚洲人成在线观看 | 爱性久久久久久久 | 成人国产视频在线观看 | 九九热在线视频免费观看 | av国产免费 | 五月天影院,久久综合, | 视频国产一区二区 | 国产99久久久久久免费看农村 |