javascript 搜索二叉树
function Tree() {
this.root = null;
}
Tree.prototype = {
constructor: Tree,
addItem: function(value) {
var Node = {
data: value,
left: null,
right: null
};
if (this.root == null) {
this.root = Node;
} else {
var current = this.root;
var parent = current;
while (current !== null) {
parent = current;
if (value < current.data) {
current = current.left;
continue; //此处easy忽略,缺少下一句if推断current.data会报错
}
if (value === current.data) {
return false;
}
if (value > current.data) {
current = current.right;
continue;
}
}
if (value < parent.data) {
parent.left = Node;
}
if (value > parent.data) {
parent.right = Node;
}
}
},
/*先序遍历*/
firstlist: function(root) {
if (root !== null) {
console.log(root.data);
this.firstlist(root.left);
this.firstlist(root.right);
}
},
/*后序遍历*/
lastlist: function(root) {
if (root !== null) {
this.lastlist(root.left);
this.lastlist(root.right);
console.log(root.data);
}
},
/*中序遍历*/
inlist: function(root) {
if (root !== null) {
this.inlist(root.left);
console.log(root.data);
this.inlist(root.right);
}
}
};
var Tree = new Tree();
Tree.addItem(5);
Tree.addItem(1);
Tree.addItem(6);
Tree.addItem(8);
Tree.addItem(7);
javascript 搜索二叉树的更多相关文章
- 【数据结构】——搜索二叉树的插入,查找和删除(递归&非递归)
一.搜索二叉树的插入,查找,删除 简单说说搜索二叉树概念: 二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树 若它的左子树不为空,则左子树上所有节点的值都小于根节点的值 若它的右 ...
- JavaScript 实现二叉树
JavaScript 实现二叉树: // JavaScript 实现二叉树 function BinaryTree () { var Node = function (key) { this.key ...
- JavaScript实现二叉树算法
二叉树的遍历方式 分别为中序遍历(左子树->当前节点->右子树).前序遍历(当前节点->左子树->右子树).后序遍历(左子树->右子树->当前节点).下面使用Jav ...
- c++ 搜索二叉树 插入,删除,遍历操作
搜索二叉树是一种具有良好排序和查找性能的二叉树数据结构,包括多种操作,本篇只介绍插入,排序(遍历),和删除操作,重点是删除操作比较复杂,用到的例子也是本人亲自画的 用到的测试图数据例子 第一.构建节点 ...
- javascript 搜索并高亮显示
2015年12月22日 15:45:08 星期二 情景: 用来筛选列表中的数据, 由于单条数据很简短, 没有用php+mysql去实现筛选功能, 只用javascript进行筛选, 匹配的高亮, 或者 ...
- 基于visual Studio2013解决面试题之0305广度优先搜索二叉树
题目
- Leetcode 96.不同的搜索二叉树
给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种? 示例: 输入: 3 输出: 5 解释: 给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / ...
- [程序员代码面试指南]二叉树问题-找到二叉树中的最大搜索二叉树(树形dp)
题意 给定一颗二叉树的头节点,已知所有节点的值都不一样,找到含有节点最多的搜索二叉子树,并返回这个树的头节点. 题解 在后序遍历过程中实现. 求解步骤按树形dp中所列步骤.可能性三种:左子树最大.右子 ...
- JavaScript搜索关键字高亮的实现
高亮功能主要是指对页面中指定区域的指定文字进行高亮显示,也就是背景着色.一般在搜索结果页面会经常用到这个功能. 下面就为大家提供一种解决方案,用javascript实现. 首先在<head> ...
随机推荐
- Mysql --分区表(6)Hash分区
HASH分区 HASH分区主要用来分散热点读,确保数据在预先确定个数的分区中尽可能平均分布.对一个表执行HASH分区时,MySQL会对分区键应用一个散列函数,以此确定数据应当放在N个分区中的哪个分区 ...
- 弹出JS提示框
弹出JS提示框Page.ClientScript.RegisterStartupScript(typeof(string), "msg", "<script> ...
- Java方法的封装
类的封装性即不能让外面的类随意修改一个类的成员变量: 在定义一个类的成员(包括变量和方法),使用private关键字说明这个成员的访问权限,只能被这个类的其他成员方法调用,而不能被其他的类中的方法所调 ...
- 不制作证书是否能加密SQLSERVER与客户端之间传输的数据?
不制作证书是否能加密SQLSERVER与客户端之间传输的数据? 在做实验之前请先下载network monitor抓包工具 微软官网下载:http://www.microsoft.com/en-us/ ...
- Linux基础精华
Linux基础精华 (继续跟新中...) 常用命令: Linux shell 环境 让你提升命令行效 率的 Bash 快捷键 [完整版] 设置你自己的liux alias Linux的Find使用 L ...
- ASP.NET中GridView控件删除数据的两种方法
今天在用GridView控件时,发现了一个问题,就是使用GridView控件在删除数据时的问题.接下来我们通过模板列方式和CommandField方式删除某条数据讲解下两者之间的区别. 方式一:通 ...
- 深究JS异步编程模型
前言 上周5在公司作了关于JS异步编程模型的技术分享,可能是内容太干的缘故吧,最后从大家的表情看出"这条粉肠到底在说啥?"的结果:(下面是PPT的讲义,具体的PPT和示例代码在h ...
- Atitit org.eclipse.jdt 的ast 架构 Eclipse JDT API spec
Atitit org.eclipse.jdt 的ast 架构 Eclipse JDT API spec 继承树1 Expression的子类1 获取子类2 继承树 Astnode>express ...
- paip.提升中文分词准确度---新词识别
paip.提升中文分词准确度---新词识别 近来,中文每年大概出现800---1仟个新的词.. 60%的分词错误是由新词导致的 作者Attilax 艾龙, EMAIL:1466519819@qq. ...
- 关于多线程与CRITICAL_SECTION的使用
CRITICAL_SECTION 只能针对多线程进行锁定,在同一个线程中,是可以进入很多次的. 同一线程可以多次进入临界区. 在测试程序(多线程同时访问CADOAccess类的对象)中,辅助线程不论是 ...