实现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)