Skip to content

  • n(n ≥ 0)个节点构成的有限集合,n为0时称为空树. 共有n - 1条边

一般概念

  • 树的顶部节点称为根节点(Root), 用r标识.

  • 除根节点外的节点称为原来树的子树(SubTree),子树之间是不相交的!

  • 每个节点有且只有一个父节点

基本术语

  • 树的度(Degree): 树的所有节点中最大的子树个数

  • 叶子节点(Leaf):度为0的节点(没有子树)

  • 父节点(Parent):有子树的节点是其子树的父节点

  • 子节点(Child):父节点的孩子节点

  • 兄弟节点(Sibling):拥有同一个父节点的子节点

  • 树的深度(Depth):树的层次

树的表示

  • 链表实现【儿子-兄弟表示法

可以将任意一个树转化为二叉树

image

旋转45°后来看为二叉树:

image

二叉树(Binary tree)

有穷的节点集合(可以为空). 由根节点左子树右子树构成的不相交的树【最大度为2,最多两个节点】。

二叉树的五种基本形态

  • 空、单节点、只有左子树或只有右子树(斜二叉树)、存在左右子树 image

二叉树的重要性质

  • 第k层最大的节点数为:2^(k-1)个节点【eg:第三层最多有4个节点】

  • 最多有 2^k-1 个节点

特殊二叉树

完全二叉树

一棵深度为k的有n个结点的二叉树,对树中的结点按从上至下、从左到右的顺序进行编号,如果编号为i(1≤i≤n)的结点与满二叉树中编号为i的结点在二叉树中的位置相同,则这棵二叉树称为完全二叉树

完全二叉树

完全二叉树

完美二叉树(满二叉树)

除了叶子节点外,其他节点都有两个子节点的二叉树

非完全二叉树,排序不规范

非完全二叉树

二叉搜索树

节点的左子树只包含 小于 根节点的数

节点的右子树只包含 大于 根节点的数

所有左子树和右子树自身必须也是二叉搜索树

  • 二叉搜索树

image

  • 非二叉搜索树

image

二叉树的储存结构

数组储存

非完全二叉树

从上至下、从左至右顺序存储,部分为null的节点会造成一定的空间浪费

  • 下图用数组储存可表示为: [1, 2, 3, null, null, 6, null, null, null, null, null, null, 13]

完全二叉树-数组储存

完全二叉树

从上至下、从左至右顺序存储

  • 下图用数组储存: [1, 2, 3, 4, 5, 6, 7, 8, 9]

完全二叉树-数组储存

链表储存

  • Left - Data - Right

image