js二叉树
插入数值
//初始化node对象
function Node ( data) {
this.data = data;
this.left = null;
this.right = null;
}
// 定义插入对象
function BST () {
this.root = null;
this.size = size;
this.count = 0;
this.insert = insert;
this.show = show;
}
//查询节点个数
function size () {
return this.count;
}
// 展示节点树
function show () {
return this.root;
}
function insert (data) {
var n = new Node(data, null, null);
if (this.root == null) {
//如果不存在节点,则此节点是根节点
this.root = n;
this.count++;
} else {
var current = this.root;
var parent;
while(current) {
parent = current;
if(data < current.data){
current = current.left;
if(current == null) {
parent.left = n;
this.count++;
break;
}
} else if (data > current.data){
current = current.right;
if(current == null) {
parent.right = n;
this.count++;
break;
}
} else {
current.data == data;
break;
}
}
}
}
插入键值对
//初始化node对象
function Node (key ,value) {
this.key = key;
this.value = value;
this.left = null;
this.right = null;
}
// 定义插入对象
function BST () {
this.root = null;
this.size = size;
this.count = 0;
this.insert = insert;
this.show = show;
this.contain = contain;
this.search = search;
}
//查询节点个数
function size () {
return this.count;
}
// 展示节点树
function show () {
return this.root;
}
//插入
function insert (key, value) {
var n = new Node(key, value);
if (this.root == null) {
//如果不存在节点,则此节点是根节点
this.count++;
return this.root = n;
} else {
var current = this.root;
var parent;
while(current) {
parent = current;
if(key < current.key){
current = current.left;
if(current == null) {
parent.left = n;
this.count++;
break;
}
} else if (key > current.key){
current = current.right;
if(current == null) {
parent.right = n;
this.count++;
break;
}
} else {
current = n;
break;
}
}
}
}
//查找是否含有这个值
function contain (key) {
if(!this.root){
return false;
}
var current = this.root;
while (current){
if (key == current.key) {
return true;
} else if (key > current.key){
current = current.right;
} else {
current = current.left;
}
}
}
//查找
function search (key) {
if(!this.root){
return null;
}
var current = this.root;
while (current){
if (key == current.key) {
return current;
} else if (key > current.key){
current = current.right;
} else {
current = current.left;
}
}
}
js二叉树的更多相关文章
- js 二叉树遍历
二叉树定义这里不再赘述. 我这里有个二叉树: var tree = { "id": 0, "name": "root", "lef ...
- JS - 二叉树算法实现与遍历 (更新中...)
一.关于二叉树: 截图来自:https://segmentfault.com/a/1190000000740261 温馨提示:学习以及使用二叉树概念,心中永远有这么一个图,对于理解和接受二叉树有很大的 ...
- js二叉树,前序/中序/后序(最大最小值,排序)
function Node(data,left,right) { this.left=left this.right=right this.data=data } function Btr() { t ...
- js 二叉树算法
//生成二叉树 function binarySearchTree() { let Node = function(key) { this.key = key; this.left = null; t ...
- js 二叉树删除最大值和最小值
//删除最小值function delMinNode (root){ if(!root) { return false; } var current = root; if (current.left ...
- 实现js的二叉树
今天算是第一次写一篇自己的博客,越是学习就越感叹学无止境,为了记录下来用js实现二叉树的方法,这算是最简单的一个算法了. 二叉树实现原理:把数组的第一个数据当作根节点,每个节点都有根节点,左孩子和右孩 ...
- js 实现二叉树
二叉树是每个结点最多有两个子树的有序树.通常子树的根被称作“左子树”(left subtree)和“右子树”(right subtree),右边的总是大于左边的!二叉树的每个结点至多只有二棵子树(不存 ...
- 【js数据结构】可逐次添加叶子的二叉树(非最优二叉树)
最近小菜鸟西瓜莹看到了一道面试题: 给定二叉树,按层打印.例如1的子节点是2.3, 2的子节点是3.4, 5的子节点是6,7. 需要建立如图二叉树: 但是西瓜莹找到的相关代码都是用js构建最优二叉树, ...
- javascript/js实现 排序二叉树数据结构 学习随笔
二叉树是一种数据结构.其特点是: 1.由一系列节点组成,具有层级结构.每个节点的特性包含有节点值.关系指针.节点之间存在对应关系. 2.树中存在一个没有父节点的节点,叫做根节点.树的末尾存在一系列没有 ...
随机推荐
- SITECORE体验编辑器 - 多站点实施站点解析
SITECORE体验编辑器 - 多站点实施站点解析 我们使用其中一个多站点实现遇到了Sitecore体验编辑器的问题.从内容编辑器中选择并尝试在体验编辑器中打开时属于某个站点的任何页面将始终解析为 ...
- PYQT5学习笔记之各模块介绍
Qtwidgets模块包含创造经典桌面风格的用户界面提供了一套UI元素的类 Qtwidegts下还有以下常用对象,所以一般使用Qtwidegts时会使用面向对象式编程 QApplication: ap ...
- 【shell脚本】通过遍历文件的一种批量执行shell命令的方法。
在分析数据时,经常会有许多机械重复的命令带入,作为一个半路出家的程序猿,我曾经对这种工作束手无策.不像一个熟手那样举重若轻的分析,感觉自己的生信分析完全是个体力活.为了打开这样的局面,我开始学习如何批 ...
- Q_DECL_OVERRIDE
Q_DECL_OVERRIDE也就是c++的override # define Q_DECL_OVERRIDE override 在重写虚函数时会用到, 作用是防止写错虚函数: void keyPre ...
- MySQL日志详细说明
这片博文我们会详细说明MySQL本身的日志,不包含重做日志和undo日志(这两个日志是innodb存储引擎的日志). MySQL本身的日志有以下几种(MySQL5.7版本): 错误日志 慢查询日志 通 ...
- php 数字变汉字
//数字变汉字 function getTheWord($num) { $arr_n = array('零', '一', '二', '三', '四', '五', '六', '七', '八', '九', ...
- 小程序 canvas实现图片预览,图片保存
wxml 代码: <view class="result-page"> <canvas bindtap="previewImage" canv ...
- Golang生成区间随机整数
package main import ( "fmt" "math/rand" "time" ) func main() { rand.Se ...
- js增加、删除、替换DOM对象
当网页被加载时,浏览器会创建页面的文档对象模型DOM,即Document Object Model 整个文档为一个文档节点(document对象) 每个html元素为一个元素节点(element对象) ...
- bzoj2120 / P1903 [国家集训队]数颜色 / 维护队列(带修改莫队)
P1903 [国家集训队]数颜色 / 维护队列 带修改的莫队 在原有指针$(l,r)$上又添加了时间指针$t$ 贴一段dalao的解释 带修改的莫队,和原版莫队相比,多了一个时间轴 原版莫队是将区间( ...