利用JavaScript实现二叉树(Binary Tree)算法

学习前端已经有段时间了,也开始想写点什么了。

今天是第一篇文章,用JS写一个二叉树算法。

首先介绍一下二叉树,完整定义可以去维基百科,我这里粗略介绍一下主要内容。

二叉树作为树的一种,是一种重要的数据结构,常见的二叉树有:

满二叉树:除叶子结点外,所有结点都有两个结点,叶子结点的left,right为NULL

哈夫曼树:又称为最优二叉数,是一种带权路径最短的树。哈夫曼编码就是哈夫曼树的应用,可以用来进行编码压缩.哈夫曼树的构造见哈夫曼树的构造

完全二叉树:除了最底层的叶子结点之外,其余层全满,而且叶子层集中在左端。堆是一种特殊的完全二叉树(全满或者差一个结点就全满)

平衡二叉树:所谓平衡二叉树指的是,左右两个子树的高度差的绝对值不超过 1。包括AVL树,红黑树.

红黑树:具体见红黑树问题

今天写个比较简单的排序二叉树,算法部分代码如下:

function BinaryTree(){
		var Node = function(key){
			this.key = key;
			this.left = null;
			this.right = null;		
		}

		var root = null;

		var insertNode = function(node,newNode){
			if(newNode.key < node.key){
				if(node.left === null){
					node.left = newNode;
				}else{
					insertNode(node.left,newNode)
				}
			}else{
					if(node.right === null){
						node.right = newNode;
					}else{
						insertNode(node.right,newNode);
					}
				}
			}
		

		this.insert = function(key){
			var newNode = new Node(key);
			if(root === null){
				root = newNode;
			}else{
				insertNode(root,newNode);
			}
		}
	}

测试代码如下:

var myprint = function(node){
			if(node != null) {
				console.log(node.key);
				myprint(node.left);
				myprint(node.right);
			}else{
				console.log("0");
			}
		}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值