树是一种非线性的数据结构,以分层的方式存储数据,特别是有序列表。树可以分为几个层次,根节点是第0层。没有任何子节点的节点称为叶子节点。
二叉树是一种特殊的树,二叉树进行查找、添加、删除都非常快。二叉树每个节点的子节点不允许超过两个。相对较小的值保存在左节点中,较大的值保存在右节点中。
- Node对象既保存数据,也保存和其他节点的连接。
- BST对象的构造函数将根节点初始化为null,以此创建一空节点。
- 插入节点的时候先判断根节点是否为null,不为null的时候通过遍历,用一个变量存储当前节点,一层层遍历BST,比较数值,直到查找到正确插入点。因为要把插入点和父节点连接起来,所以要有一个指向“父节点”一个指向“当前节点”。然后通过遍历一步步移动。
- 中序遍历是通过递归,先访问子左树,再访问根节点,最后访问右子树
//节点类
function Node(dara,left,right) {
this.data = data;
this.left = left;
this.right = right;
this.show = show;
}
function show() {
return this.data;
}
//树
function BST() {
this.root = null;
this.insert = insert;
this.inOrder = inOrder;
}
function insert(data) {
var n = new Node(data,null,null);
if(this.root == <