国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > JS > 正文

JavaScript數(shù)據(jù)結(jié)構(gòu)與算法之二叉樹實現(xiàn)查找最小值、最大值、給定值算法示例

2024-05-06 16:48:37
字體:
供稿:網(wǎng)友

本文實例講述了JavaScript數(shù)據(jù)結(jié)構(gòu)與算法之二叉樹實現(xiàn)查找最小值、最大值、給定值算法。分享給大家供大家參考,具體如下:

function Node(data,left,right) {  this.data = data;  this.left = left;  this.right = right;  this.show = show;}function show() {  return this.data;}function BST() {  this.root = null;  this.insert = insert;  this.preOrder = preOrder;  this.inOrder = inOrder;  this.postOrder = postOrder;  this.getMin = getMin;//查找最小值  this.getMax = getMax;//查找最大值  this.find = find;//查找給定值}function insert(data) {  var n = new Node(data,null,null);  if(this.root == null) {    this.root = n;  }else {    var current = this.root;    var parent;    while(current) {      parent = current;      if(data < current.data) {        current = current.left;        if(current == null) {          parent.left = n;          break;        }      }else {        current = current.right;        if(current == null) {          parent.right = n;          break;        }      }    }  }}// 中序遍歷function inOrder(node) {  if(!(node == null)) {    inOrder(node.left);    console.log(node.show());    inOrder(node.right);  }}// 先序遍歷function preOrder(node) {  if(!(node == null)) {    console.log(node.show());    preOrder(node.left);    preOrder(node.right);  }}// 后序遍歷function postOrder(node) {  if(!(node == null)) {    postOrder(node.left);    postOrder(node.right);    console.log("后序遍歷"+node.show());  }}/**查找BST上的最小值*因為較小的值總是在左子節(jié)點上,在BST上查找最小值,只需要遍歷左子樹,直到找到最后一個節(jié)點。*/function getMin(){  var current = this.root;  while(!(current.left == null)) {    current = current.left;  }//  return current;//返回最小值所在的節(jié)點  return current.data;//返回最小值}/* *查找BST上的最大值 *因為較大的值總是在右子節(jié)點上,在BST上查找最大值,只需要遍歷右子樹,直到找到最后一個節(jié)點。*/function getMax() {  var current = this.root;  while(!(current.right == null)) {    current = current.right;  }//  return current;//返回最大值所在的節(jié)點  return current.data;//返回最大值}/**查找給定值*在BST上查找給定值,需要比較該值和當(dāng)前節(jié)點上的值的大小。*通過比較,就能確定如果給定值不在當(dāng)前節(jié)點時,該向左遍歷還是向右遍歷。*/function find(data) {  var current = this.root;  while(current != null) {    if(current.data == data) {      return current;    }else if(data < current.data) {      current = current.left;    }else {      current = current.right;    }  }  return null;}var nums = new BST();nums.insert(23);nums.insert(45);nums.insert(16);nums.insert(37);nums.insert(3);nums.insert(99);nums.insert(22);var min = nums.getMin();console.log("最小值為: " + min);var max = nums.getMax();console.log("最大值為: " + max);var find = nums.find("88");console.log( find);if(find != null){  console.log("給定值為: " + find.data);  console.log("給定值為: " + find.show());}var find = nums.find("37");console.log( find);if(find != null){  console.log("給定值為: " + find.data);  console.log("給定值為: " + find.show());}

運行結(jié)果:

JavaScript,數(shù)據(jù)結(jié)構(gòu),算法,二叉樹,最小值,最大值,給定值

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


注:相關(guān)教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 济南市| 旬邑县| 奉贤区| 青阳县| 镇沅| 女性| 乐清市| 诸城市| 法库县| 陕西省| 桦甸市| 勐海县| 密云县| 绥棱县| 宜兴市| 博爱县| 沾化县| 松江区| 色达县| 正安县| 孝感市| 桐城市| 根河市| 大英县| 南安市| 西宁市| 遂川县| 江孜县| 枣强县| 汶上县| 永城市| 柞水县| 科技| 新郑市| 山西省| 富蕴县| 瑞安市| 台山市| 太仆寺旗| 牟定县| 凉山|