javascript数据结构之二叉搜索树实现方法
网络编程 2021-07-04 21:03www.168986.cn编程入门
这篇文章主要介绍了javascript数据结构之二叉搜索树实现方法,较为详细的分析了二叉搜索树的概念、原理与JavaScript实现二叉搜索树的方法,对于学习JavaScript数据结构具有一定参考借鉴价值,需要的朋友可以参考下
本文实例讲述了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程序设计有所帮助。
上一篇:js获取图片宽高的方法
下一篇:javascript常用经典算法实例详解
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程