资讯专栏INFORMATION COLUMN

使用javascript实现排序二叉树(1)

Caicloud / 2719人阅读

摘要:使用实现排序二叉树排序二叉树的定义二叉树的基础上,左节点比父节点要小,右节点比父节点要大的二叉树,叫排序二叉树。下期内容实现排序二叉树的中序前序后续遍历实现二叉树的节点查找功能实现排序二叉树的删除节点功能应用排序二叉树实现一个小游戏

使用javascript实现排序二叉树(1)

排序二叉树的定义: 二叉树的基础上,左节点比父节点要小,右节点比父节点要大的二叉树,叫排序二叉树。

下面直接进入到我们的javascript代码 定义 排序二叉树的过程

/*
    分析二叉树的结构得出,二叉树由节点构成,每个节点又有自己的左右子树。
    并且有一个根节点
*/
function BinaryTree(){
  var root = null; //根节点默认为null
  /*
    1.节点类型的构造函数,默认左右子树都为空
  */
  function Node(key){
    this.key = key;
    this.left = null;
    this.right = null;
  }
  /*
      2.根据排序二叉树的规律,我们定义一个插入节点的方法,去填充排序二叉树。该方法是BinaryTree的一个方法,需要绑定在this上让其他调用者能调用。而不是作为内部方法。
  */
  this.insert = function(key){     
    var newNode = new Node(key);
    if(root === null){
       root = newNode;
    }else{
       insertNode(root,newNode)
    }
  }
  var insertNode = function(node,newNode){
    if(newNode.key < node.key){
      if(node.left === null){
         node.left = newNode;
      }else{
         insertNode(node.left,newNode)
      }
    }else{
      if(newNode.key > node.key){
        if(node.right === null){
          node.right = newNode;
        }else{
          insertNode(node.right,newNode)
        }
      }
    }
  }
}

/*
    测试:查看是否报错,具体的流程逻辑可以通过打断点来判断是否与自己设想的一样。
                      8
                   7     9
                 3         12
               2   4
                     6
                   5
*/
var nodes = [8,7,3,4,6,5,2,9,12]
var binaryTree = new BinaryTree();
nodes.forEach((item)=>{
    binaryTree.insert(item)
})

通过断点调试,最后得到的一个二叉树应该是这样的。也是符合二叉排序树的定义的。

重点

分析数据结构的一个规律,从而能够定义出节点类型中有哪些属性

方法不要都绑定在 this 上面,因为有些函数是不需要暴露出去的,而是内部使用的。

我觉得让我收获比较大的是这里的 insert 这个函数中又调用一个 insertNode 的函数,因为事实上真正的插入节点是需要两个参数的,一个父节点,一个要插入的节点。所以会需要递归调用,如果不依靠 insertNode 直接用 insert方法 去递归是没法递归的。因为外部压根获取不到 root 。之前还想着 只用 一个方法就实现插入递归 ,但是确实不行。

下期内容

实现排序二叉树的 中序 前序 后续 遍历

实现二叉树的节点查找功能

实现排序二叉树的 删除节点功能

应用排序二叉树实现一个小游戏

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/97034.html

相关文章

  • 使用javascript实现排序叉树(2)

    摘要:使用实现排序二叉树上一篇文章我们构造了基本的一个排序二叉树的数据结构,但是仅仅是定义了一个方法去创建二叉排序树,今天我们来给我们的数据结构添加一些遍历的功能。 使用javascript实现排序二叉树(2) 上一篇文章我们构造了基本的一个排序二叉树的数据结构,但是仅仅是定义了一个insert方法去创建二叉排序树,今天我们来给我们的数据结构添加一些遍历的功能。 二叉树的三种遍历方式(以根节...

    susheng 评论0 收藏0
  • JavaScript 数据结构与算法之美 - 非线性表中的树、堆是干嘛用的 ?其数据结构是怎样的 ?

    摘要:笔者写的数据结构与算法之美系列用的语言是,旨在入门数据结构与算法和方便以后复习。非线性表中的树堆是干嘛用的其数据结构是怎样的希望大家带着这两个问题阅读下文。其中,前中后序,表示的是节点与它的左右子树节点遍历访问的先后顺序。 showImg(https://segmentfault.com/img/bVbuvnj?w=900&h=250); 1. 前言 想学好前端,先练好内功,内功不行,...

    singerye 评论0 收藏0
  • 学习javascript数据结构(四)——树

    摘要:原文博客地址学习数据结构四树知乎专栏简书专题前端进击者知乎前端进击者简书博主博客地址的个人博客人之所能,不能兼备,弃其所短,取其所长。通常子树被称作左子树和右子树。敬请期待数据结构篇最后一篇文章学习数据结构五图参考文章树数据结构二叉树 前言 总括: 本文讲解了数据结构中的[树]的概念,尽可能通俗易懂的解释树这种数据结构的概念,使用javascript实现了树,如有纰漏,欢迎批评指正。 ...

    Dean 评论0 收藏0
  • 数据结构与算法:叉树算法

    摘要:因此,根据题目给出的先序遍历和中序遍历,可以画出二叉树选参考数据结构与算法描述实现二叉树算法浅谈数据结构二叉树慕课网实现二叉树算法前端树控件腾讯软件开发面试题 内容衔接上一章 数据结构与算法:常见排序算法 内容提要 什么是树   - 为什么使用树 二叉树 二叉查找树 红黑树 B、B+树 堆 伸展树 树 可以点击链接感受下笔者用d3.js画的tree https://codepen...

    Little_XM 评论0 收藏0
  • JavaScript实现简单二叉查找树

    摘要:二叉查找树二叉查找树也叫二叉搜索树它只允许我们在左节点存储比父节点更小的值,右节点存储比父节点更大的值,上图展示的就是一颗二叉查找树。 前两天接到了蚂蚁金服的面试电话,面试官很直接,上来就抛出了三道算法题。。。 其中有一道关于二叉树实现中序遍历的,当时没回答好,所以特意学习了一把二叉树的知识,行文记录总结。 二叉树&二叉查找树 showImg(https://segmentfault....

    frank_fun 评论0 收藏0

发表评论

0条评论

Caicloud

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<