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

首頁 > 開發 > JS > 正文

JavaScript數據結構與算法之二叉樹添加/刪除節點操作示例

2024-05-06 16:48:38
字體:
來源:轉載
供稿:網友

本文實例講述了JavaScript數據結構與算法之二叉樹添加/刪除節點操作。分享給大家供大家參考,具體如下:

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.inOrder = inOrder;  this.getMin = getMin;  this.getMax = getMax;  this.find = find;  this.remove = remove;}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());  }}// 二叉樹查找最小值function getMin(){  var current = this.root;  while(!(current.left == null)) {    current = current.left;  }  return current.data;}// 二叉樹上查找最大值function getMax() {  var current = this.root;  while(!(current.right == null)) {    current = current.right;  }  return current.data;}// 查找給定值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;}function remove(data) {  root = removeNode(this.root,data);}function getSmallest(node) {  if (node.left == null) {   return node;  }  else {   return getSmallest(node.left);  }}function removeNode(node,data) {  if(node == null) {    return null;  }  if(data == node.data) {    // 沒有子節點的節點    if(node.left == null && node.right == null) {      return null;    }     // 沒有左子節點的節點    if(node.left == null) {      return node.right;    }    // 沒有右子節點的節點    if(node.right == null) {      return node.left;    }    // 有2個子節點的節點    var tempNode = getSmallest(node.right);    node.data = tempNode.data;    node.right = removeNode(node.right,tempNode.data);    return node;  }else if(data < node.data) {    node.left = removeNode(node.left,data);    return node;  }else {    node.right = removeNode(node.right,data);    return node;  }}//代碼初始化如下: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 value = nums.find("45");console.log(value);nums.remove(23);

運行結果:

JavaScript,數據結構,算法,二叉樹

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


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 肥乡县| 福鼎市| 柳林县| 寻乌县| 清水河县| 新泰市| 阳泉市| 霍城县| 贵港市| 宁河县| 朝阳县| 原阳县| 遂平县| 桐梓县| 大英县| 田林县| 青州市| 涡阳县| 托克托县| 双江| 安吉县| 温宿县| 嘉禾县| 行唐县| 丹阳市| 桐梓县| 渭南市| 保亭| 新宁县| 色达县| 玉树县| 刚察县| 玛沁县| 灵川县| 广宁县| 信阳市| 肇源县| 白朗县| 南皮县| 潼南县| 新竹县|