javascript - 二叉树
2024-10-13 14:38:37
都是些简单的东西,所以直接上代码了。
/**
* Created by huangjacky on 14-10-3.
*/
function Node(element, left, right) {
this.element = element;
this.level = 0;
this.left = left;
this.right = right;
} function BST() {
this.root = null;
}
BST.prototype = {
insert: function (element) {
var n = new Node(element, null, null);
if (this.root == null) {
this.root = n;
n.level = 0;
return true;
} else {
var current = this.root;
var parent = null;
while (current != null) {
if (element < current.element) {
parent = current;
current = current.left;
} else if (element > current.element) {
parent = current;
current = current.right;
} else {
return false;
}
}
n.level = parent.level + 1;
if (element < parent.element) {
parent.left = n; } else {
parent.right = n;
}
return true;
}
}, toString: function () {
return this.inOrder(this.root, function (n) {
return "\t" + n.element + '(' + n.level + ")\t";
});
}, inOrder: function (n, fn) {// 中序遍历
if (!n) {
return '';
} else {
return this.inOrder(n.left, fn) + fn(n) + this.inOrder(n.right, fn);
}
}, preOrder: function (n, fn) { // 先序遍历
if (!n) {
return '';
} else {
return fn(n) + this.preOrder(n.left, fn) + this.preOrder(n.right, fn);
}
}, postOrder: function (n, fn) {// 后序遍历
if (!n) {
return '';
} else {
return this.postOrder(n.left, fn) + this.postOrder(n.right, fn) + fn(n);
}
}
}; var a = new BST();
a.insert(3);
a.insert(1);
a.insert(5);
a.insert(2);
a.insert(4);
console.log("inorder: " + a.toString()); var fn = function (n) {
return "\t" + n.element + '(' + n.level + ")\t";
};
var s1 = a.preOrder(a.root, fn);
var s2 = a.postOrder(a.root, fn);
console.log("pre order:" + s1);
console.log("post order:" + s2);
最新文章
- C++ map的基本操作和使用
- $.unique()去重问题
- 用java实现简易PC版2048
- MVC之前的那点事儿系列(1):进入CLR
- Android 横屏切换竖屏Activity的生命周期(转)
- Windows Sserver 2008 R2 搭建DNS配置区域与配置转发器上外网
- C. Ilya and Sticks
- log4net 动态设定日志文件名
- ios 获取字符串所需要占用的label的高度
- WebConfig加密解密
- WWDC2014之App Extensions学习笔记
- C#:using与.net对象销毁
- CATransform3D的使用以及各个参数的含义
- Memcached源码分析之items.c
- C++图形编程之graphics.h头文件
- hdu 5438(拓扑+bfs)
- window下安装 node ,并搭建 vue 项目
- JDK8下Object类源码理解
- Python 手动新建 Scrapy项目
- http://www.bugku.com:Bugku——备份是个好习惯(http://120.24.86.145:8002/web16/)
热门文章
- 修改默认MYSQL数据库data存放位置
- String reorder
- WordPaster-Chrome浏览器控件安装方法
- LLVM 初探<;一>;
- 从DB灌值到DataTable时,字段值为NULL时报错相关信息;
- ubuntn下 nginx+phpstorm 中配置xdebug调试
- MySQL去除外键关联关系
- ASP.NET前端解决方案之一:Ext.Net入门随笔1
- Windows7上搭建Cocos2d-x 3.1.1开发环境
- 基于OWIN WebAPI 使用OAUTH2授权服务【授权码模式(Authorization Code)】