实现js的二叉树

今天算是第一次写一篇自己的博客,越是学习就越感叹学无止境,为了记录下来用js实现二叉树的方法,这算是最简单的一个算法了。

二叉树实现原理:把数组的第一个数据当作根节点,每个节点都有根节点,左孩子和右孩子,初始化为null。

1 function tree() {
2   this.value = null;
3   this.left = null;
4   this.right = null;5 }

每次获取到数值不为空则从左到右赋值给左孩子和右孩子,当下一个值大于根节点的值,如果左孩子为空,则把值赋给左孩子,如果不为空这则再次往上找根节点,如果小于则赋给右孩子

 1 /*
 2  *拿数组的第一个数据作为根节点,下面的每个节点都是一个新的对象,分别以不同的中心节点
 3  *判断左右节点的归属,最后形成一个二叉树
 4  */
 5 tree.prototype.add = function(data) {
 6   if (!data) {
 7     return;
 8   };
 9   if (this.value == null) {
10     this.value = data;
11     return;
12   };
13   //定义最中心的中心节点
14   var nlast = new arrayAct();
15   nlast.value = data;
16   if (this.value >= data) {
17     if (this.left == null) {
18       this.left = nlast;
19     } else {
20       this.left.add(data);
21     }
22   } else {
23     if (this.right == null) {
24       this.right = code;
25     } else {
26       this.right.add(data);
27     }
28   }
29 }

最后就是循环遍历获取数组中的值

1 var array = [7, 6, 56, 102, 5, 4, 47, 7000, 200, 45, 24, 85, 63, 954, 6222, 5],
2     re = [];
3   sortArray = new tree();
4   for (var i = 0; i < array.length; i++) {
5     sortArray.add(array[i]);
6   };
7   sortArray.print(re);
8   console.log(re)
时间: 2025-01-02 05:06:21

实现js的二叉树的相关文章

用JS实现二叉树

用JS实现二叉树数据结构, 完成遍历.查找最大/小值.查找特定值以及删除节点的操作. 参考博文 //定义节点 class Node { constructor(data){ this.root = this; this.data = data; this.left = null; this.right = null } } //创建二叉搜索树(BST)) class BinarySearchTree { constructor(){ this.root = null } //插入节点 inser

jS生成二叉树,二叉树的遍历,查找以及插入

js递归,二叉树的操作 //递归算法n次幂 function foo(n) { if (n == 1) { return 1; } else { return n * foo(n - 1); } } //console.log(foo(3));var nodes = { name: 'root', childs: [ { name: 'a1' }, { name: 'a2' }, { name: 'a3' }, { name: 'b1' }, { name: 'b2' }, { name: 'b

【js数据结构】可逐次添加叶子的二叉树(非最优二叉树)

最近小菜鸟西瓜莹看到了一道面试题: 给定二叉树,按层打印.例如1的子节点是2.3, 2的子节点是3.4, 5的子节点是6,7. 需要建立如图二叉树: 但是西瓜莹找到的相关代码都是用js构建最优二叉树,假如,依次向二叉树中添加4,2,6,1,3,5,7最优二叉树如图: 比根节点小的节点总是放在根节点的左节点上,比根节点大的节点总是放在根节点的右节点上. 假如想依次向二叉树添加1,2,3,4,5,6,7 二叉树又是如何呢? 后一个数据总是比前一个数据大,那么就会一直在根节点的右节点上. 构建最优二叉

javascript/js实现 排序二叉树数据结构 学习随笔

二叉树是一种数据结构.其特点是: 1.由一系列节点组成,具有层级结构.每个节点的特性包含有节点值.关系指针.节点之间存在对应关系. 2.树中存在一个没有父节点的节点,叫做根节点.树的末尾存在一系列没有子节点的节点,称为叶子节点.其他可以叫做中间节点. 3.树的根节点位于第一层,层级数越大,节点位置越深,层级数也叫做树高. 排序二叉树为二叉树的一种类型,其特点是: 1.节点分为左右子树. 2.在不为空的情况下,左子树子节点的值都小于父节点的值. 3.在不为空的情况下,右子树子节点的值都大于父节点的

js二叉树算法

二叉树(Binary Tree)是n(n>=0)个结点的有限集合,该集合或者为空集(空二叉树),或者由一个根结点和两棵互不相交的.分别称为根结点的左子树和右子树的二叉树组成. 二叉树的特点 每个结点最多有两棵子树,所以二叉树中不存在度大于2的结点.二叉树中每一个节点都是一个对象,每一个数据节点都有三个指针,分别是指向父母.左孩子和右孩子的指针.每一个节点都是通过指针相互连接的.相连指针的关系都是父子关系. 二叉树节点的定义 二叉树节点定义如下: struct BinaryTreeNode { i

JS二叉树的简单实现方法示例【转载】

简单的二叉树实现,并且实现升序和降序排序输出 function Node(data , left,right){ this.data = data; this.left = left; this.right = right; this.show = show; function show(){ return this.data; } }; function Bst(){ this.root = null; this.insert = insert;//插入 this.inOrder = inOr

JS算法之二叉树排序

二叉树: <script type="text/javascript">             //定义每个节点的模型,每个节点都分中心节点,左右节点三个节点,节点也可能成为树             function arrayAct(){                       this.value = null;                       this.left = null;                       this.right =

js数据结构之二叉树的详细实现方法

数据结构中,二叉树的使用频率非常高,这得益于二叉树优秀的性能. 二叉树是非线性的数据结构,用以存储带有层级的数据,其用于查找的删除的性能非常高. 二叉树 数据结构的实现方法如下: function Node (data, left, right) { this.data = data; this.left = left; this.right = right; this.show = function () { return this.data; }; } function BST () { t

重建二叉树(基于js)

输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回. 一棵树的根节点可以就是这棵树前序遍历的第一个节点,没毛病吧! 在中序遍历得到的序列中找到该节点,它左边的序列就是该节点的左子树,右序列就是该节点的右子树.而左右子树的前序序列和中序序列也可以得到 接着利用递归完成二叉树的重组 function TreeNode(