二叉树是常见的数据结构之一,固然也是程序猿必须得熟悉的数据结构之一。大一时我用过
C++
和C语言
实现过它,那最近都在用javascript
,索性就写一下javascript
版本的二叉树,相信不会太难。javascript
学过二叉树的都应该知道,一棵二叉树最多只能有两个分支结点,固然也能没有结点。下图是常见的二叉树的形式:
前端
一般二叉树都是用类
的形式来建立的,虽然javscript
如今也有类
了,可是为了熟悉一下原型,这里仍是用原型来模拟类
的行为。如下是实现的代码:java
function Node(){
this.data = null
this.leftChild = null
this.rightChild = null
}
function BinaryTree(){
Node.call(this)
this.root = null
}
复制代码
能够看到这里定义了两个类,一个是Node
类,另外一个是binaryTree
类。其中一个结点含有数据域,和它的左指针以及右指针,而一颗树则含有结点包含的一切属性,以及一个根节点。这里能够看作树是结点的子类,下面则利用原型
来实现它们之间的继承关系:git
// 实现继承
;(function () {
const F = function () {}
F.prototype = Node.prototype
BinaryTree.prototype = new F()
BinaryTree.prototype.constructor = BinaryTree
})()
BinaryTree.prototype.insertNode = function(data){
if(this.root === null){
this.root = {}
this.root.data = data
}else{
insertNode(this.root, data)
}
}
复制代码
常见的二叉树遍历方式有:前序遍历
、后序遍历
、中序遍历
以及层次遍历
,这些遍历方式能够用递归
来实现,固然用队列
或者栈
来实现也是能够的,可是递归
仍是要来得简洁一些,代码以下:github
BinaryTree.prototype.travelTree = function (root) { //前序遍历
console.log(root.data)
this.travelTree(root.leftChild)
this.travelTree(root.rightChild)
}
复制代码
以上就是javascript
实现的二叉树的建立和遍历,完整的代码请点击微信
扫描下方的二维码或搜索「tony老师的前端补习班」关注个人微信公众号,那么就能够第一时间收到个人最新文章。 数据结构