js 实现二叉树

二叉树是每个结点最多有两个子树的有序树。通常子树的根被称作“左子树”(left subtree)和“右子树”(right subtree),右边的总是大于左边的!二叉树的每个结点至多只有二棵子树(不存在出度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。

 

 

 

 

 1 function Node(num)
 2 {
 3     this.num   = num;
 4     this.count = 1;
 5     this.pLeft = null;
 6     this.pRight = null;
 7 }
 8 
 9 
10 function createNode(value)
11 {
12     var pNode      = new Node(value);
13     pNode.num    = value;
14     pNode.count  = 1;
15     pNode.pLeft  = null;
16     pNode.pRight = null;
17     return pNode;
18 }
19 
20 
21 function  addNode(value, pNode)
22 {
23     if (pNode == null){
24         return createNode(value);
25     }
26     if (value == pNode.num){
27         pNode.count++;
28         return pNode;
29     }
30     if (value < pNode.num){
31         if (pNode.pLeft == null){
32             pNode.pLeft = createNode(value);
33             return pNode.pLeft;
34         }else{
35             return addNode(value, pNode.pLeft);
36         }
37     }else{
38         if (pNode.pRight == null){
39             pNode.pRight = createNode(value);
40             return pNode.pRight;
41         }else{
42             return addNode(value, pNode.pRight);
43         }
44     }
45 }
46 
47 var list = [10,8,15,2,14,16,20,7,5,13,60,34,1,10];
48 var pRoot = null;
49 var lent = list.length;
50 
51 for(var i=0; i<lent; i++){
52     if (pRoot==null){
53         pRoot = createNode(list[i]);
54     }else{
55         addNode(list[i], pRoot);
56     }
57 }
58 console.info(pRoot);

结果如图

用户js、php这些语言玩数据结构比C语言 好玩太多了!!!

转载于:https://www.cnblogs.com/fengwei/p/3163226.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值