/binary-tree

javascript实现二叉树,包括二叉树的构建,中序遍历,先序遍历,后续遍历,查找等功能

Primary LanguageJavaScript

js实现二叉树

项目运行方式1:打开浏览器的控制台,直接将js代码复制进去,回车运行 项目运行方式2:使用sublime打开js文件,ctrl + B

为了让算法的实现和工作中用到的技术相匹配,所以使用js来实现这个功能。

1、二叉树的定义

二叉树是一种具有层级特性的数据结构,一棵树包含多个节点,节点自身含有一个属性,就是它代表的数值。节点之间有一定的关系。

排序二叉树(上图不是一个排序二叉树)

  • 如果他的左子树上不为空,则他的左子树上所有节点的值都小于根节点上的值;
  • 2、如果他的右子树上不为空,则他的右子树上所有节点的值都小于根节点上的值;
  • 他的左、右子树也是二叉排序树;
  • 没有完全相等的两个节点;

2、排序二叉树的创建

传入一个没有重复元素的数组,返回排序二叉树

var nodes = [8,3,10,1,6,11,2,9,12];

算法的核心**:比较要插入的节点和根节点的大小,如果比根节点小,就走左子树,否则,走右子树。因为二叉树的任意子树,也是一个二叉树,所以可以使用递归的方式来构建二叉树

3、中序遍历二叉树

  • 判断二叉树是否有左子树,如果有,就去遍历左子树,没有,就输出根节点,并遍历右子树
  • 根据上面的算法,一个排序二叉树的中序遍历的过程,就是对节点进行排序
  • 1 2 3 6 8 9 10 11 12

4、先序遍历二叉树

复制二叉树的时候,先序遍历的效率最高

  • 先访问根节点,然后再访问当前节点的左子树,然后是右子树
  • 8 3 1 2 6 10 9 11 12

5、后续遍历二叉树

  • 用于文件系统的遍历
  • 2 1 6 3 9 12 11 10 8

6、二叉树查询

  • 显然,比根节点小的节点在根节点的左边,比根节点大的节点在根节点的右边。通过比较大小,就可以快速找到我们想要的节点是否存在。