<html>
<head>
<script type="text/javascript">
window.onload = function() {
var div = document.getElementById("cnt");
var $div = document.getElementById("seq");
var nodes = [
new Node({"key" : 7, "value": new Object()}),
new Node({"key" : 5, "value": new Object()}),
new Node({"key" : 9, "value": new Object()}),
new Node({"key" : 4, "value": new Object()}),
new Node({"key" : 2, "value": new Object()}),
new Node({"key" : 11, "value": new Object()}),
new Node({"key" : 8, "value": new Object()}),
new Node({"key" : 3, "value": new Object()}),
new Node({"key" : 10, "value": new Object()}),
new Node({"key" : 78, "value": new Object()}),
new Node({"key" : 34, "value": new Object()}),
new Node({"key" : 27, "value": new Object()}),
new Node({"key" : 18, "value": new Object()}),
new Node({"key" : 39, "value": new Object()})
];
var tree = new BinarySearchTree();
for(var i in nodes) {
tree.insert(nodes[i]);
$div.innerHTML = $div.innerHTML + " " + nodes[i].key;
}
var arr = [];
tree.mediaSort(tree.rootNode, arr);
for(var i in arr) {
div.innerHTML = div.innerHTML + " " + arr[i];
}
}
//节点
function Node(args) {
this.key = args.key;
this.value = args.value;
this.leftNode = null;
this.rigthNode = null;
this.isVisited = false;
}
function BinarySearchTree() {
this.rootNode = null;
}
BinarySearchTree.prototype = {
//插入节点
"insert" : function(node) {
if(this.rootNode == null) {//根节点不存在
this.rootNode = node;
} else {//根节点存在
var currentNode = this.rootNode;
while(true) {
if(node.key < currentNode.key) {//插入到左子树
if(currentNode.leftNode == null) {
currentNode.leftNode = node;
break;
} else {
currentNode = currentNode.leftNode;
}
} else if(node.key > currentNode.key) {//插入到右子树
if(currentNode.rightNode == null) {
currentNode.rightNode = node;
break;
} else {
currentNode = currentNode.rightNode;
}
} else {//key已存在
alert("key已存在, 无法插入");
break;
}
}
}
},
//搜索节点
"search" : function(key, node) {
var flag = false;
if(node == null) return;
if(key < node.key) {
flag = this.search(key, node.leftNode);
} else if(key > node.key) {
flag = this.search(key, node.rightNode);
} else {
flag = true;
return flag;
}
return flag;
},
//中序遍历排序
"mediaSort" : function(node, arr) {
if(!node) return;
node.isVisited = false;
if(node.leftNode != null && !node.leftNode.isVisited) {
this.mediaSort(node.leftNode, arr);
arr.push(node.key);
this.mediaSort(node.rightNode, arr);
} else {
arr.push(node.key);
node.isVisited = true;
this.mediaSort(node.rightNode, arr);
}
}
};
</script>
</head>
<body>
<div style="text-align: center; ">
<font color="purple" size="14">二叉搜索树排序</font>
<div id="seq" style="margin-top:30px;">原序列: </div>
<div id="cnt">中序遍历: </div>
</div>
</body>
</html>
- 浏览: 1380265 次
- 性别:
- 来自: 济南
最新评论
-
宇落YL:
不顶不行的...ie10↓没办法修改input file的va ...
file上传控件onchange事件失效的解决方法 -
love398146779:
大哥,写的是关键呀。强顶。
spring jndi的配置 websphere weblogic tomcat 详解 -
di1984HIT:
写的很好,学习了~
JVM process Virtual Memory Usage (Resident Set Size) On A Linux 2.6.25 Kernel -
freezingsky:
过程变步骤。哎!
JDBC注册过程分析 -
静夜独窗:
自己做的一个可以使用极少的内存生 ...
java千万级别数据生成文件思路和优化
相关推荐
JavaScript算法源代码(例如:二叉搜索树、笛卡尔乘积、线性搜索、存储桶排序、DFS、 Kruskal算法、欧几里,等等) 链表、双链表、队列、Stack、哈希表、堆 - 最大和最小堆、优先队列、Trie、树、二叉搜索树、AVL树...
本文实例讲述了javascript二叉搜索树实现方法。分享给大家供大家参考,具体如下: 二叉搜索树:顾名思义,树上每个节点最多只有二根分叉;而且左分叉节点的值 < 右分叉节点的值 。 特点:插入节点、找最大/最小...
jbst - JavaScript 中的二叉搜索树 jbst 是 JS 中 BST(二叉搜索树)的实现。 二叉搜索树之所以重要,是因为可以有效地实现以下操作: 插入一个键值 确定一个键值是否在树中 从树中删除一个键值 按排序顺序打印...
二叉搜索树 如何以不同的顺序遍历二叉树。 如何将BFS和DFS应用于二进制树。 如何从给定的数组构造树: 图/树(问题的46%,最常见) 数组/字符串(38%) 链表(10%) 搜索/排序(2%) 堆栈/队列(2%) ...
二叉搜索树实现包括: 插入节点 计算高度 深度优先遍历:在每个节点上依次执行一个函数(升序或降序) 返回排序的节点数组(升序或降序) 不平衡树的独立平衡 自平衡节点插入 节点移除 搜索并返回特定节点 演示...
二叉搜索树到大和树 JavaScript 中等的 1021 删除最外面的括号 JavaScript 简单的 1019 链接列表中的下一个更大节点 JavaScript和JavaScript递归 中等的 1009 以10为底的整数的补码 JavaScript 简单的 1008 ...
树木二叉搜索树验证从排序数组创建二叉搜索树为给定的二叉树创建每个深度的所有节点的链表在 BST 中按顺序查找节点的后继查找二叉树中两个节点的共同祖先返回二叉树中总和为给定值的所有路径检查二叉树是否平衡检查...
二叉搜索树II-插入 二叉搜索树II-删除 二叉树有序遍历 二叉树级顺序遍历 二叉树最长连续序列 二叉树最长连续序列II 二叉树最大路径总和 二叉树路径 二叉树后置遍历 二叉树预遍历 二叉树倒挂 二叉树之字形水平顺序遍
很棒的javascript代码 :pushpin:持续建立个人的原始码库,更多信息请看这篇。 1. JavaScript原生和常用方法的代码实现 /实现 实现 实现 深拷贝实现 ... 二叉搜索树 跳台阶 中发现二叉树中结点值的和为
JavaScript 数据结构:二叉搜索树 JavaScript 数据结构:链表 JavaScript 数据结构:栈和队列 JavaScript 实现常见排序算法 JavaScript 实现常用设计模式 其他笔记 bash 脚本编程 python 学习笔记 Too young, too ...
节点ds JavaScript中常见的数据结构和基本算法实现目录链接栈树木二叉树二进制搜索树自平衡二叉搜索树AVL树替罪羊树红黑树B树B +树2-3棵2-3-4树堆二进制堆弱堆二项式堆斐波那契堆图形其他节点双节点BinaryTreeNode ...
树是一种二叉树,用于在 n 维空间中对多胞体进行排序和搜索。例子例如,给定XY平面中某处的正方形,我们选择第一个分割,即 BSP 树的根,以在X方向将正方形切成两半。 在每个切片上,我们将从上一个切片中选择一条...
合并排序数组合并两个排序的链表检查单链表是否是回文在原处反转字符串(以字符数组形式输入) 最小堆栈(堆栈DS,在恒定时间O(1)中获得堆栈的最小值) 重复排列在二叉搜索树中搜索有效字谜从二进制链接列表中获取...
ii二叉搜索树中的搜索中等两数相加字符串转换整数-atoi盛最多水的容器三数之和最接近的三数之和四数之和删除链表的倒数第 n 个节点括号生成两两交换链表中的节点两数相除在排序数组中查找元素的第一个和最后一个位置...
使用Javascript实现基本数据结构 内容:- 问题解决模式 频率计数器 多指针 滑动窗口 0. 搜索 线性搜索 二分查找 1. 排序 冒泡排序 选择排序 ...6. 二叉搜索树 在 BST 中插入值 在 BST 中寻找价值
二叉搜索树 ( BST ) 字典树(前缀树) ( Trie ) 哈希表 ( Hash Table ) 堆 ( Heap ) 图 ( Graph ) 二分查找 ( Binary Search ) 位运算 ( Bit Manipulation ) 分治算法 ( Divide And Conquer ) 排序 ( Sort ) 回溯...
二叉搜索树 二叉完全树 连载 段树 细绳 频率 比赛 知识管理计划 少量 解析 数学 常见的 组合号 基数 少量 几何学 大批 常见的 改编 滑动窗口 哈希表 链表 子集 两个指针 种类 字首 堆栈/队列 堆 单调(单调栈) 哈希...
二叉搜索树 笛卡尔树 B树 红黑树 展开树 AVL树 ####堆 链表(排序) 链表(未排序) 二叉堆 二项堆 斐波那契堆 ####图表 邻接表 发生率列表 邻接矩阵 发生率矩阵 ###语言 Julia 去 Python 哈斯克尔 C 锈 ...
在指定空间中创建对象数组去重时间格式化获取字符串长度邮箱字符串判断颜色字符串转换字符串转为驼峰格式字符串字符统计剑指offer二维数组中的查找替换空格从尾到头打印链表重建二叉树用两个栈实现队列旋转数组的...
数组字符串链表/二指针树/二叉搜索树堆栈队列堆哈希表 搜索/分而治之排序动态规划递归深度优先搜索/广度优先搜索贪婪数学 位操作图联合查找其他人 任务 数组 283! 485! 645! 448! 442! 287! 第697章! 第667章...