zl程序教程

您现在的位置是:首页 >  前端

当前栏目

javascript二叉树基本功能实现

JavaScript二叉树 实现 基本功能
2023-09-27 14:28:45 时间
preOrderTraverseNode(node.left, callback); //{2} preOrderTraverseNode(node.right, callback); //{3} this.postOrderTraverse = function(callback){ postOrderTraverseNode(root, callback); var postOrderTraverseNode = function (node, callback) { if (node !== null) { postOrderTraverseNode(node.left, callback); //{1} postOrderTraverseNode(node.right, callback); //{2} callback(node.key); //{3} this.min = function() { return minNode(root); var minNode = function(node) { if (node) { while (node node.left !== null) { node = node.left; return node.key; return null; this.max = function() { return maxNode(root); var maxNode = function (node) { if (node){ while (node node.right !== null) { //{5} node = node.right; return node.key; return null; this.search = function(key) { return searchNode(root, key); var searchNode = function(node, key) { if (node === null) { return false; if (key node.key) { return searchNode(node.left, key); } else if (key node.key) { return searchNode(node.right, key); }else{ return true; this.remove = function(key) { root = removeNode(root, key); var removeNode = function(node, key){ if (node === null){ //{2} return null; if (key node.key){ //{3} node.left = removeNode(node.left, key); //{4} return node; //{5} } else if (key node.key){ //{6} node.right = removeNode(node.right, key); //{7} return node; //{8} } else { //键等于node.key //第一种情况——一个叶节点 if (node.left === null node.right === null){ //{9} node = null; //{10} return node; //{11} //第二种情况——一个只有一个子节点的节点 if (node.left === null){ //{12} node = node.right; //{13} return node; //{14} } else if (node.right === null){ //{15} node = node.left; //{16} return node; //{17} //第三种情况——一个有两个子节点的节点 var aux = findMinNode(node.right); //{18} node.key = aux.key; //{19} node.right = removeNode(node.right, aux.key); //{20} return node; //{21} function printNode(value) { console.log(value); var tree = new BinarySearchTree(); tree.insert(11); tree.insert(7); tree.insert(15); tree.insert(5); tree.insert(3); tree.insert(9); tree.insert(8); tree.insert(10); tree.insert(13); tree.insert(12); tree.insert(14); tree.insert(20); tree.insert(18); tree.insert(25); tree.insert(6); tree.inOrderTraverse(printNode); tree.preOrderTraverse(printNode); tree.postOrderTraverse(printNode); console.log(tree.min()); console.log(tree.max()); console.log(tree.search(1) ? Key 1 found. : Key 1 not found.); console.log(tree.search(8) ? Key 8 found. : Key 8 not found.);
JS算法之二叉树、二叉搜索树 1. 知识点简讲 • 树在前端开发中的应用场景 • 二叉树深度优先遍历 递归和迭代的JS版本 2. 二叉树相关算法 3. 二叉搜索树(BST)相关算法