都是些简单的东西,所以直接上代码了。

/**
* 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);

最新文章

  1. C++ map的基本操作和使用
  2. $.unique()去重问题
  3. 用java实现简易PC版2048
  4. MVC之前的那点事儿系列(1):进入CLR
  5. Android 横屏切换竖屏Activity的生命周期(转)
  6. Windows Sserver 2008 R2 搭建DNS配置区域与配置转发器上外网
  7. C. Ilya and Sticks
  8. log4net 动态设定日志文件名
  9. ios 获取字符串所需要占用的label的高度
  10. WebConfig加密解密
  11. WWDC2014之App Extensions学习笔记
  12. C#:using与.net对象销毁
  13. CATransform3D的使用以及各个参数的含义
  14. Memcached源码分析之items.c
  15. C++图形编程之graphics.h头文件
  16. hdu 5438(拓扑+bfs)
  17. window下安装 node ,并搭建 vue 项目
  18. JDK8下Object类源码理解
  19. Python 手动新建 Scrapy项目
  20. http://www.bugku.com:Bugku——备份是个好习惯(http://120.24.86.145:8002/web16/)

热门文章

  1. 修改默认MYSQL数据库data存放位置
  2. String reorder
  3. WordPaster-Chrome浏览器控件安装方法
  4. LLVM 初探&lt;一&gt;
  5. 从DB灌值到DataTable时,字段值为NULL时报错相关信息;
  6. ubuntn下 nginx+phpstorm 中配置xdebug调试
  7. MySQL去除外键关联关系
  8. ASP.NET前端解决方案之一:Ext.Net入门随笔1
  9. Windows7上搭建Cocos2d-x 3.1.1开发环境
  10. 基于OWIN WebAPI 使用OAUTH2授权服务【授权码模式(Authorization Code)】