数据结构--二叉树(js版)

本文介绍了二叉树作为非线性数据结构的概念,重点讨论了二叉搜索树(BST)的特点和优势,包括快速的查找、添加和删除操作。解释了BST的Node对象和构造函数,详细描述了插入、中序遍历和不同类型的查找方法,以及删除节点的三种情况。此外,还探讨了将计数功能添加到BST节点以记录数据出现频率的可能性,并提出了将方法添加到BST原型以优化内存使用的思考。
摘要由CSDN通过智能技术生成

树是一种非线性的数据结构,以分层的方式存储数据,特别是有序列表。树可以分为几个层次,根节点是第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 == <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值