JS实现二叉搜索树
来源:互联网 发布:嵌入式网络视频服务器 编辑:程序博客网 时间:2024/06/05 09:42
简述
二叉查找树(Binary Search Tree),它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。
代码说明
首先先创建一个辅助节点类Node,它初始化了三个属性:节点值,左孩子,有孩子。
class Node { constructor(value) { this.value = value; this.left = null; this.right = null; } }
接着创建一个二叉搜索树类BST,它初始化了根节点为null。
class BST { constructor() { this.root = null; } }
然后,给这个BST类声明一些方法:
1.insert(value):向树中插入一个节点值为value的节点。
2.midOrderTraverse(callback):中序遍历树,并将树中的每个节点传入callback回调函数里。
3.preOrderTraverse(callback):前序遍历树,并将树中的每个节点传入callback回调函数里。
4.lastOrderTraverse(callback):后序遍历树,并将树中的每个节点传入callback回调函数里。
5. minNodeInTree():查找树中节点值最小的节点。
6. maxNodeInTree():查找树中节点值最大的节点。
7. searchNodeInTree():判断树中是否存在某个节点值为value的节点
具体代码
1.insert(value):向树中插入一个节点值为value的节点。
insert(value) { var newNode = new Node(value);//实例化一个新节点 var root = this.root; if (root == null) { //如果根节点不存在 this.root = newNode; //将这个新节点作为根节点 } else { //如果根节点存在 insertNode(root, newNode); //将这个新节点在根节点之后找到合适位置插入 } }
这里需要创建一个辅助函数:insertNode(node,newNode);
/**函数名称:insertNode*函数说明:将新节点newNode插入到node节点之后的合适位置*函数参数:newNode,要插入的新节点* node,node节点*/function insertNode(node, newNode) {//如果newNode节点值小于node节点值,进入node节点左分支 if (newNode.value < node.value) { //如果node节点左孩子为空 if (node.left == null) { //将newNode赋给node节点左孩子,插入完毕。 node.left = newNode; } else { //如果node节点左孩子不为空,则继续向左孩子的左孩子递归 insertNode(node.left, newNode); } } else { if (node.right == null) { node.right = newNode; } else { insertNode(node.right, newNode); } } }
未完待续。。。。。
阅读全文
0 0
- JS实现二叉搜索树
- JS实现二叉搜索树
- 二叉搜索树实现
- 搜索二叉树实现
- 搜索二叉树实现
- 二叉搜索树实现
- 二叉搜索树的实现
- 二叉搜索树C++实现
- 实现一个搜索二叉树
- java实现二叉搜索树
- 二叉搜索树的实现
- 二叉搜索树的实现
- 二叉搜索树的实现
- c++实现搜索二叉树
- c++实现二叉搜索树
- 二叉搜索树基本功能实现
- Java实现二叉搜索树
- 搜索二叉树的实现
- 烹饪方案
- Android•Lottie 动画库填坑记
- 国际学术期刊会议大排名与常用的期刊会议名字
- HTTP Header 详解
- 基本语法
- JS实现二叉搜索树
- 基于selenium Java实现传感器的批量配置
- Jquery ☞ 滑动效果演示(面板的收和放)
- 自动轮播图插件(参数)
- JBoss AS 7.1.1.Final 启动失败:JBAS015899:Brontes starting
- 感受
- Solr之配置文件solr.xml。
- 深度学习模型---稀疏编码
- ROS IDE---RoboWare