二叉搜索树
数据结构
数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。百度百科:数据结构
- 为什么要学习数据结构?
程序=算法+数据结构,计算机程序设计的本质是将业务逻辑转换成数理逻辑,通过逻辑推理以及数理运算解决客观世界存在的困难,而算法和数据解结构就是数理逻辑的推演模式和展现方式。
二叉搜索树
二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。百度百科:二叉搜索树
一些名词概念
一个节点可以有祖先及诶单和后台,一个节点的祖先(除了根节点)包括父节点、祖父节点、曾祖父节点…
子树:子树由节点和它的后台组成
节点的深度:节点的深度取决于它的祖先节点的数量
树的高度:高度取决于所有节点深度的最大值
树的遍历
- 前序遍历
前序遍历首先访问根结点然后遍历左子树,最后遍历右子树。在遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。
前序遍历结果:ABDECF
前序遍历可用于复制一棵已有的二叉树,或是打印一个结构化的文档。
- 中序遍历
指先访问左(右)子树,然后访问根,最后访问右(左)子树的遍历方式
以从最小到最大的顺序访问所有节点,中序遍历的一种应用就是排序操作。
- 后序遍历
指先访问子树,然后访问根的遍历方式。
其中的一种应用是计算文件系统中一个目录和它的子目录中所有文件所占空间的大小。
JavaScript
实现搜索树
创建一棵树
1 | function BinaryBree(key) { |
中序遍历
1 | //中序遍历接口 |
前序遍历
1 | //前序遍历接口 |
后续遍历
1 | //后续遍历接口 |
查找
1 | //查找最小值 |
删除
1 | //删除指定指定节点接口 |