二叉树与二叉查找树

一、树的相关术语

  • 树是一种非线性的数据结构,以分层的形式存储数据
  • 树由一组以边连接的节点组成,如下:

这里写图片描述

  • 树的层数被定义为树的深度

二、二叉树

  • 二叉树是一种特殊的树,规定每个节点的子节点不能超过两个
  • 通过将子节点的个数设置为2,可以高效地在树中插入、删除、查找数据
  • 二叉查找树是一种特殊的二叉树,相对较小的值保存在左节点上,较大的值保存在右节点上,这一特性使得查找的效率很高

这里写图片描述
三、二叉查找树的实现

1、 二叉查找树由节点组成,或者说树都是由节点组成,因此,我们要定义的第一个对象就是Node:

function Node(data){
   
    this.data = data;   //存储键值
    this.left = left;   //指向左孩子的指针
    this.right = right; //指向右孩子的指针
    this.show = show;   //显示保存在节点中的数据
}
function show(){
   
    return this.data;
}

2、创建一个类,用来表示二叉查找树(BST)。类中只包含一个数据成员:root(一个用来表示二叉查找树的根节点的Node对象),初始化为null,从而创建一个空节点。

function BST (){
   
    this.root = null;
}

3、设计一个insert()方法,用来向树中加入新节点

  • 创建一个Node对象,将数据传入该对象中保存
  • 检查BST是否有根节点,如果没有,是一颗新树,该节点为树的根节点
  • 如果该元素不是树的根节点,则要遍历BST,找到适合插入节点的位置,实现算法:
    • 设根节点为当前节点
    • 如果待插入节点中保存的数据小于当前节点,则设新的当前节点为原节点的左节点,否则,执行第四步
    • 如果当前节点为null,则插入节点,否则,继续循环第二步
    • 如果待插入节点中保存的数据大于当前节点,则设新的当前节点为原节点的右节点
    • 如果当前节点为null,则插入节点,否则,继续循环第四步
function BST() {
   
    this.root = null;
    this.insert = insert;
}

function insert(data) {
   
    var node = new Node(data,
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值