javascript - 二叉树
都是些简单的东西,所以直接上代码了。
- /**
- * 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);
javascript - 二叉树的更多相关文章
- javascript二叉树
javascript中的二叉树一(binary tree) 毕业也快2年了,毕业之后就没有认真写过博客了,都是那里学习一下,这里弄一下.学习了也不做笔记,过后就忘记了.我对这种状态打从心里是讨厌的. ...
- javascript二叉树基本功能实现
都是常用的功能. 删除是最复杂的.. <!DOCTYPE html> <html lang="en"> <head> <meta char ...
- javascript数据结构与算法-- 二叉树
javascript数据结构与算法-- 二叉树 树是计算机科学中经常用到的一种数据结构.树是一种非线性的数据结构,以分成的方式存储数据,树被用来存储具有层级关系的数据,比如文件系统的文件,树还被用来存 ...
- 数据结构二叉树的递归与非递归遍历之java,javascript,php实现可编译(1)java
前一段时间,学习数据结构的各种算法,概念不难理解,只是被C++的指针给弄的犯糊涂,于是用java,web,javascript,分别去实现数据结构的各种算法. 二叉树的遍历,本分享只是以二叉树中的先序 ...
- JavaScript 实现二叉树
JavaScript 实现二叉树: // JavaScript 实现二叉树 function BinaryTree () { var Node = function (key) { this.key ...
- javascript数据结构与算法---二叉树(删除节点)
javascript数据结构与算法---二叉树(删除节点) function Node(data,left,right) { this.data = data; this.left = left; t ...
- javascript数据结构与算法---二叉树(查找最小值、最大值、给定值)
javascript数据结构与算法---二叉树(查找最小值.最大值.给定值) function Node(data,left,right) { this.data = data; this.left ...
- JavaScript实现二叉树算法
二叉树的遍历方式 分别为中序遍历(左子树->当前节点->右子树).前序遍历(当前节点->左子树->右子树).后序遍历(左子树->右子树->当前节点).下面使用Jav ...
- javascript数据结构与算法--二叉树遍历(后序)
javascript数据结构与算法--二叉树遍历(后序) 后序遍历先访问叶子节点,从左子树到右子树,再到根节点. /* *二叉树中,相对较小的值保存在左节点上,较大的值保存在右节点中 * * * */ ...
随机推荐
- UIView的剖析(转)
转自:http://blog.csdn.net/mengtnt/article/details/6716289 前面说过UIViewController,但是UIView也是在MVC中非常重要的一层 ...
- java实验一 20135104刘帅
实验报告 一.实验目的与要求: 实验目的: 1. 使用JDK编译.运行简单的Java程序 2.使用Eclipse 编辑.编译.运行.调试Java程序 实验要求: 1.没有Linux基础的同学建议先学习 ...
- 开关电源-BUCK
DCDC 称为直流直流变换,将直流电进行斩波,形成脉动的直流电压,最后经过储能,滤波电路留平滑输出,使得输出为直流电.在这期间运用PWM或PFM调制方法.(PWM:pulse width ...
- 从RTSP协议SDP数据中获得二进制的SPS、PPS
在RTSP协议的交互过程中,第二步客户端发送DESCRIBE请求之后,服务端会返回SDP内容,该SDP内容中有关于媒体和会话的描述,本篇文章主要给出如何从SDP字符串中得到H264视频信息中的sps. ...
- C#设计模式总结
一.引言 经过这段时间对设计模式的学习,自己的感触还是很多的,因为我现在在写代码的时候,经常会想想这里能不能用什么设计模式来进行重构.所以,学完设计模式之后,感觉它会慢慢地影响到你写代码的思维方式.这 ...
- python __setattr__, __getattr__, __delattr__, __call__
python __setattr__, __getattr__, __delattr__, __call__ getattr `getattr`函数属于内建函数,可以通过函数名称获取 value = ...
- [ucgui] 对话框6——触屏位置简单例子
>_<:直接调用函数获得触屏位置: xPhys = GUI_TOUCH_GetxPhys(); /* Get the A/D mesurement result in x */ yPhys ...
- C++ 泛型算法
<C++ Primer 4th>读书笔记 标准容器(the standard container)定义了很少的操作.标准库并没有为每种容器类型都定义实现这些操作的成员函数,而是定义了一组泛 ...
- 使用grunt打包ueditor源代码
支持版本支持 UEditor 1.3.0+ 的版本 使用方法1.线上下载ueditor下载地址:ueditor,要下载"完整版 + 源码" 2.安装nodejs下载nodejs并安 ...
- Mac直播服务器Nginx配置对HLS的支持
在上一篇中Mac上搭建直播服务器Nginx+rtmp,我们已经搭建了nginx+rtmp直播服务器.下面需要对Nginx服务器增加对HLS的支持.在Nginx增加对HLS种支持比较简单,只是简单的修改 ...