tnblog
首页
视频
资源
登录

Js 实现二叉树

6551人阅读 2020/6/23 14:22 总访问:3657645 评论:1 收藏:0 手机
分类: 前端

javascript

Js 实现二叉树


定义


二叉树是n(n>=0)个节点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根节点和两棵互不相交的、分别称为根节点的左子树和右子树组成。
下列图展示了一棵普通二叉树:

二叉树

二叉树特点


由二叉树定义以及图示分析得出二叉树有以下特点:
1)每个节点最多有两颗子树,所以二叉树中不存在度大于2的节点。
2)左子树和右子树是有顺序的,次序不能任意颠倒。
3)即使树中某节点只有一棵子树,也要区分它是左子树还是右子树。


简单代码的实现与运用


定义树


tree.js

  1. function Tree(){
  2. this.root=null;
  3. }
  4. //添加根节点
  5. Tree.prototype.addNode = function(val){
  6. var n = new Node(val);
  7. if (this.root == null) {
  8. this.root = n;
  9. }else{
  10. this.root.addNode(n);
  11. }
  12. }
  13. //执行树的遍历函数
  14. Tree.prototype.traverse = function(){
  15. this.root.visit();
  16. }
  17. //查找节点
  18. Tree.prototype.search = function(val){
  19. let SearchOne = this.root.search(val);
  20. return SearchOne;
  21. }

定义节点


node.js

  1. //添加节点
  2. function Node(val) {
  3. this.value = val;
  4. this.left = null;
  5. this.right = null;
  6. }
  7. //遍历节点
  8. Node.prototype.visit = function(){
  9. if (this.left !=null) {
  10. this.left.visit();
  11. }
  12. console.log(this.value);
  13. if (this.right != null) {
  14. this.right.visit();
  15. }
  16. }
  17. //查找节点
  18. Node.prototype.search = function(val){
  19. if(this.value == val){
  20. return this;
  21. }else if(val < this.value && this.left != null){
  22. return this.left.search(val);
  23. }else if(val > this.value && this.right != null){
  24. return this.right.search(val);
  25. }
  26. return null;
  27. }
  28. //添加子节点
  29. Node.prototype.addNode = function(n){
  30. if(n.value < this.value){
  31. if(this.left==null){
  32. this.left=n;
  33. }else{
  34. this.left.addNode(n);
  35. }
  36. }else if(n.value > this.value){
  37. if(this.right==null){
  38. this.right=n;
  39. }else{
  40. this.right.addNode(n);
  41. }
  42. }
  43. }


测试Js的代码


sketch.js

  1. var tree;
  2. function setup() {
  3. tree = new Tree();
  4. for (var i = 0; i < 10; i++) {
  5. tree.addNode(Math.floor(Math.random(0,100)*100));
  6. }
  7. console.log(tree);
  8. tree.traverse();
  9. }

其他


关于二叉树.net扩展

写得不好,大家不要笑哈哈哈哈!
Nuget地址:https://www.nuget.org/packages/AiDaSi_BinaryTree/
项目地址:https://github.com/AiDaShi/GeekTimeLearning/tree/master/BinaryTree


欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739

评价

饰心

2020/6/23 14:37:02

二叉树左节点小于根节点,右节点大于根节点

Js与Controller中分割字符串的方法

js: varstr=OpenRule; varstrs=newArray(); strs=str.split(&quot;,&quot;); for(vari=0;i&lt;strs.length;i++){ $(&q...

珍藏!! Js CSS不传之秘集合

&lt;!--其中5指每隔5秒刷新一次页面--&gt; &lt;metahttp-equiv=&quot;refresh&quot;content=&quot;5&quot;&gt; =========...

JsON对象和JsON字符串的区别

JSON对象是直接可以使用JQuery操作的格式,如C#中可以用对象(类名)点出属性(方法)一样var str2 = { &quot;name&quot;: ...

对象转JsON

/// &lt;summary&gt; /// 对象转json /// &lt;/summary&gt; public static string ToJson(object jsonObject) ...

来!!!今天玩 Json

别怪我懒,其实我是真的懒///&lt;summary&gt; ///List转成json ///&lt;/summary&gt; ///&lt;typeparamname=&quot;T&quot...

Js遍历localStorage的键值对

//遍历本地存储localStorage for(vari=0;i&lt;localStorage.length;i++){ varkey=localStorage.key(i);//获取本地存储的K...

拓展Js通用方法来对应c操作

有很多时候,js不能像c#一样有那样多的方法操作,但是我们可以自己写一些方法,让他拥有:比如最常见的一些:注意:js里的...

Js的localStorage

localStorage的优势1、localStorage拓展了cookie的4K限制2、localStorage会可以将第一次请求的数据直接存储到本地,这个相...

Js监听input、keydown,有输入法时打字完成后触发事件

在给输入框绑定input或keydown事件时预期效果是有输入法时,输入中文后触发事件,不希望输一个字母就触发一次事件可以用到c...

Js截取两个字符中间的字符串

使用正则表达式来取比如我们要取brush:js;toolbar:false 这个字符串冒号和分号中间的字符串可以varclassname=&quot;brush:j...

Vue.Js+Layer实现表格数据绑定与更新

一:使用Vue.js绑定好数据与更新事件 使用v-on绑定好事件,在事件里边直接把该行数据传递进去,在更新方法里边就可以直接...

Js使用正则进行常用验证

?:问号前面的数字匹配0次或1次,也就是懒惰匹配,最多匹配一次+:匹配1次到无穷次*:匹配0次到无穷次验证只能:数字、字母...

Js字符串的替换

vartitle=&quot;我是你的大表哥&quot;; title=title.replace(&quot;大表哥&quot;,&quot;大表妹&quot;); alert(title);输...

Vue.Js 实现省市联动

HTML代码&lt;divid=&quot;pro_citys&quot;&gt; 省:&lt;selectid=&quot;provice&quot;v-on:change=&quot;prochange()&quo...

Vue.Js常见问题

一:花括号当做字符串显示的问题1:检查下绑定到vue.js的id是否重复,如果id重复了,就有可能存在这种问题,因为有可能把数...

vue.Js常用指令

v-html可以把字符串当成一个html来渲染,而不是原样输出Html类似.net mvc中的@Html.Raw()方法&lt;divv-html=&quot;item.tit...
这一世以无限游戏为使命!
排名
2
文章
657
粉丝
44
评论
93
docker中Sware集群与service
尘叶心繁 : 想学呀!我教你呀
一个bug让程序员走上法庭 索赔金额达400亿日元
叼着奶瓶逛酒吧 : 所以说做程序员也要懂点法律知识
.net core 塑形资源
剑轩 : 收藏收藏
映射AutoMapper
剑轩 : 好是好,这个对效率影响大不大哇,效率高不高
ASP.NET Core 服务注册生命周期
剑轩 : http://www.tnblog.net/aojiancc2/article/details/167
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术