刷题前必学!二叉树!用JavaScript学数据结构与算法

‍JavaScript算法与数据结构-HowieCong

务必要熟悉JavaScript使用再来学!

一、树是什么?

  • 数据结构中的树,对于现实世界中的树简化——树根抽象为“根节点”,树枝抽象为“边”,树枝的两个端点抽象为“结点”,树叶抽象为“叶子结点”

  • 计算机中的树如下:

二、树的重点

  • 树的层次计算规则:根结点所在的那一层为第一层,其子节点为第二层,以此类推
  • 结点和树的高度计算规则:叶子结点高度为1,每向上一层高度就加1,逐层向上累加至目标结点时,所得到的值就是目标结点的高度。树种结点的最大高度,为“树的高度”
  • 度的概念:一个结点开叉出去多少个子树,被称为结点的“度”,比如如上图所示,根节点的“度”就是3
  • 叶子结点:叶子结点就是度为0的结点,上图所示,最后一层的结点的度全部为0,所以这一层的结点都是叶子节点

三、二叉树是什么?

  • 二叉树的要求

    • 它可以没有根节点,作为一颗空树存在
    • 如果不是空树,那么必须由根结点、子树和右子树组成,且左右子树都是二叉树

    • 二叉树不能被简单定义为每个结点的度都是2的树,普通的树并不会区分左子树和右子树,但在二叉树中,左右子树的位置是严格约定的、不能交互的,如上图,也就是B和C、D、E、F和G是不能交换的

四、二叉树的实现

  • 在JavaScript中,二叉树使用对象的定义。结构分为三部分:

    • 数据域
    • 左侧子结点(左子树根结点)的引用
    • 右侧子结点(右子树根结点)的引用
  • 在定义二叉树构造函数时,需要把左侧子结点和右侧子结点都预制为空
//function TreeNode(val){
    this.val = val;
    this.left = this.right =null;
}
  • 当创建一个二叉树结点时,直接调用构造函数、传入数据域的值就行
const node = new TreeNode(1)
  • 就可以得到值为1的二叉树结点,结构如下:

  • 以这个结点为根节点,可以通过给left/right赋值拓展其子树信息,延展出一棵二叉树,如下:

❓其他

1. 疑问与作者HowieCong声明

  • 如有疑问、出错的知识,请及时点击下方链接添加作者HowieCong的其中一种联系方式或发送邮件到下方邮箱告知作者HowieCong
  • 若想让作者更新哪些方面的技术文章或补充更多知识在这篇文章,请及时点击下方链接添加里面其中一种联系方式或发送邮件到下方邮箱告知作者HowieCong
  • 声明:作者HowieCong目前只是一个前端开发小菜鸟,写文章的初衷只是全面提高自身能力和见识;如果对此篇文章喜欢或能帮助到你,麻烦给作者HowieCong点个关注/给这篇文章点个赞/收藏这篇文章/在评论区留下你的想法吧,欢迎大家来交流!

2. 作者社交媒体/邮箱-HowieCong

你可能感兴趣的:(刷题前必学!二叉树!用JavaScript学数据结构与算法)