JavaScript 数据结构(九): 树

JavaScript 数据结构系列目录

JavaScript 数据结构(一): 数组

JavaScript 数据结构(二): 栈

JavaScript 数据结构(三):队列

JavaScript 数据结构(四):双端队列

JavaScript 数据结构(五):链表

JavaScript 数据结构(六):集合

JavaScript 数据结构(七):字典

JavaScript 数据结构(八):散列表

JavaScript 数据结构(九): 树

JavaScript 数据结构(十):二叉堆和堆排序

JavaScript 数据结构(十一):图



一、树的概述

树是一种由 n (n >= 1) 个结点组成的一个具有层次的集合的数据结构。

之所以称之为是因为它看起来像一颗倒挂起来的树。

也就是说,它的根在上叶在下


而它具有如下特点:

每个节点具有零个多个子节点,但其只能有一个父节点。

如果有个节点没有父节点,那么它必然是根节点

每个拥有多个子节点的节点也可以被称之为子树

二、树的相关语术

根节点 : 位于顶部的节点叫做根节点。
内部节点 : 至少拥有一个子节点的节点是为内部节点。
外部节点(又称叶节点) : 没有子元素节点的节点称之为外部节点或叶节点。
子树 :拥有多个子节点的节点可以被称之为子树。
深度 : 节点的深度取决于它祖先节点的数量。
高度 : 节点的高度取决于其深度的最大值。

三、二叉树和二叉搜索树

1、二叉树与二叉搜索数的概念

二叉树是一种特殊的树。

其每个节点最多只能拥有两个子元素:左侧子节点右侧子节点

而这个定义有助于我们写出更高效的算法(插入,查找和删除)。

其在计算机科学中运用的十分广泛。

二叉搜索树(BST) 是二叉树的一种,但其只允许你在左侧节点存储比父节点小的值,在右侧存储比父节点大的值。

如图:

在这里插入图片描述

2、创建二叉搜索树类

老样子,我们先创建一个 BinarySearchTree 类与它的辅助类 Node。

以 Node 类来表示二叉搜索树中的每个节点。

class Node {
   
	constructor(key) {
   
		this.key = key;// 节点值
		this.left = null;// 左侧子节点
		this.right = null;// 右侧子节点
	}
}

class BinarySearchTree {
   
    constructor() {
   
        this.root = null;
        
        this.comparFn = (a,b) => {
   
            if ( a === b ) return 0;
            return a < b ? -1 : 1;
        };
    }
}

创建完后,又到了我们填充方法时间。

(1)、insert 方法

insert(key) {
   
    if ( this.root == null ) this.root = new Node(
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值