js实现数据结构--树

本文介绍了树的数据结构,特别是二叉树和二叉搜索树的概念。详细讲解了树的相关术语,如根节点、叶节点等,并展示了如何使用JavaScript实现二叉搜索树,包括插入节点、查找最小值和最大值、遍历以及节点删除的操作。
摘要由CSDN通过智能技术生成

什么是树?

树是一种分层数据的抽象模型。现实生活中最常见的树的例子就是家谱,或是公司的组织架构。

树的结构图:如下图

树的结构图

树的相关术语:

一棵树包含一系列存在父子关系的节点。每个节点都有一个父节点(除了顶部的第一个节点)以及零个或多个子节点.下面介绍几个常见的树的术语。

  • 根节点:位于树顶部的节点,它没有父节点
  • 内部节点:至少有一个子节点的节点
  • 外部节点:没有子节点的节点,也称为叶节点
  • 子树:子树由节点和它的后代构成,如树的结构图中的子树
  • 节点的深度:节点的祖先节点的数量
  • 树的高度:所有节点深度的最大值

二叉树和二叉搜索树:

二叉树是一种特殊的树结构,二叉树中的节点最多只能有了两个子节点,一个是左侧节点,另一个是右侧节点。

二叉搜索树(BST):二叉搜索树是二叉树的一种,但是它只允许你在左侧节点存储(比父节点)小的值,在右侧节点存储(比父节点)大(或者等于)的值,如上面的树结构就是典型的二叉搜索树。

二叉搜索树的每一个节点也有两个指针,分别指向左侧子节点和右侧子节点。如下图:

二叉搜索树数据结构的组织方式

注意:规范来说,键是树的相关术语中对节点的称呼。

js实现二叉搜索树的相关定义与方法:

首先是定义一个树的类,因为树的每个节点都有左子树和右子树,所以在定义节点的时候需要指定两个指针。二叉树中的一些方法有向树中插入一个节点,以及寻找树中的最小值和最大值,代码如下:

 function BinarySearchTree() {
        var Node = function (key) {
            this.key = key;
            this.left = null;
            this.right = null
        };
        var root = null;

        //向树中插入一个新的键
        this.insert = function (key) {
            //创建一个用来表示新节点的Node实例
            var newNode = new Node(k
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值