二叉树理论基础

56 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第8天,点击查看活动详情

二叉树理论基础

今天开始刷二叉树相关的题,首先回顾一下二叉树的相关知识。(数据结构的学习在一年以前,太久远了)

二叉树种类

满二叉树

对于满二叉树,首先大家应该都了解了度的知识。满二叉树就是一颗只有度为0的节点和度为2的节点的二叉树,并且度为0的节点在同一层上。另外,满二叉树有一个特点是深度为k的满二叉树,有2^k-1个节点。

image.png

上图就是一个满二叉树。

完全二叉树

在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2^(h-1)个节点。

完全二叉树的概念要好好理解一下,记得上数据结构课的时候,就错了完全二叉树的判断。

二叉搜索树

二叉搜索树是有数值的有序树。它满足三个条件:

  1. 如果它的左子树不为空,那么左子树上所有结点的值均小于它根结点的值
  2. 如果它的右子树不为空,那么右子树上的所有结点的值均大于它根结点的值
  3. 它的左右子树也分别为二叉搜索树

如图所示就是一棵二叉搜索树:

image.png

还有一些特殊的二叉树,这里就不一一赘述。

二叉树的定义

二叉树的定义也是需要了解的,不能只会做题不会二叉树的定义。

function TreeNode(val, left, right) {
    this.val = (val===undefined ? 0 : val)
    this.left = (left===undefined ? null : left)
    this.right = (right===undefined ? null : right)
}

总结

接下来要开始二叉树的旅程,上一次就是从这里中断的,这次一定要坚持一刷啊~