持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第8天,点击查看活动详情
二叉树理论基础
今天开始刷二叉树相关的题,首先回顾一下二叉树的相关知识。(数据结构的学习在一年以前,太久远了)
二叉树种类
满二叉树
对于满二叉树,首先大家应该都了解了度的知识。满二叉树就是一颗只有度为0的节点和度为2的节点的二叉树,并且度为0的节点在同一层上。另外,满二叉树有一个特点是深度为k的满二叉树,有2^k-1个节点。
上图就是一个满二叉树。
完全二叉树
在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2^(h-1)个节点。
完全二叉树的概念要好好理解一下,记得上数据结构课的时候,就错了完全二叉树的判断。
二叉搜索树
二叉搜索树是有数值的有序树。它满足三个条件:
- 如果它的左子树不为空,那么左子树上所有结点的值均小于它根结点的值
- 如果它的右子树不为空,那么右子树上的所有结点的值均大于它根结点的值
- 它的左右子树也分别为二叉搜索树
如图所示就是一棵二叉搜索树:
还有一些特殊的二叉树,这里就不一一赘述。
二叉树的定义
二叉树的定义也是需要了解的,不能只会做题不会二叉树的定义。
function TreeNode(val, left, right) {
this.val = (val===undefined ? 0 : val)
this.left = (left===undefined ? null : left)
this.right = (right===undefined ? null : right)
}
总结
接下来要开始二叉树的旅程,上一次就是从这里中断的,这次一定要坚持一刷啊~