js相关:javascript数据结构之二叉搜索树实现方法

发布于 2020-12-30|标签javascript
复制链接
摘记: 本文实例讲述了javascript二叉搜索树实现方法。分享给大家供大家参考,具体如下:二叉搜索树:顾名思义,树上每个节点最多只有二根分叉;而且左分叉节点的值 < 右分叉节点的值 。特点: ..
本文实例讲述了javascript二叉搜索树实现方法。分享给大家供大家参考,具体如下:二叉搜索树:顾名思义,树上每个节点最多只有二根分叉;而且左分叉节点的值 。特点:插入节点、找最大/最小节点、节点值排序 非常方便二叉搜索树-javascript实现 ```javascript // 目标节点的值 //应该向左插,工作节点移到左节点 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(""); println("先序遍历:"); bTree.preOrder(bTree.root); println(""); println("后序遍历:"); bTree.postOrder(bTree.root); println(""); var minNode = bTree.min(); println("最小节点:" + (minNode == null ? "不存在" : minNode.data)); println(""); var maxNode = bTree.max(); println("最大节点:" + (maxNode == null ? "不存在" : maxNode.data)); // ]]> 先序遍历: 6 3 1 4 8 9 后序遍历: 1 4 3 9 8 6 最小节点:1 最大节点:9--> ``` 输出结果: ```xhtml 中序遍历: 1 3 4 6 8 9 先序遍历: 6 3 1 4 8 9 后序遍历: 1 4 3 9 8 6 最小节点:1 最大节点:9 ```
冀ICP备17029012号-4 | 版权所有©鲍亚龙 |免责声明  | GIF图库  | NUXT版