【二叉树】1,理论基础

理论基础

  • 1.1二叉树的种类
    • 1.1.1满二叉树
    • 1.1.2完全二叉树
    • 1.1.3二叉搜索树
    • 1.1.4平衡二叉搜索树
  • 1.2存储方式
    • 1.2.1链式存储
    • 1.2.2线式存储
  • 1.3二叉树的遍历
    • 1.3.1深度优先搜索
      • 1.3.1.1前序遍历(递归法、迭代法)
      • 1.3.1.2中序遍历(递归法、迭代法)
      • 1.3.1.3后序遍历(递归法、迭代法)
    • 1.3.2广度优先搜索
      • 1.3.2.1层次遍历(迭代法)
  • 1.4二叉树的定义

1.1二叉树的种类

1.1.1满二叉树

除最后一层无任何子节点外,每一层上的所有结点都有两个子结点的二叉树。
【二叉树】1,理论基础_第1张图片

1.1.2完全二叉树

一个深度为k的有n个节点的二叉树,对树中的节点按从上至下、从左到右的顺序进行编号,如果编号为i(1≤i≤n)的结点与满二叉树中编号为i的结点在二叉树中的位置相同,则这棵二叉树称为完全二叉树。
【二叉树】1,理论基础_第2张图片

1.1.3二叉搜索树

二叉搜索树(Binary Search Tree),又名二叉排序树(Binary Sort Tree)。

二叉搜索树是具有有以下性质的二叉树:

若左子树不为空,则左子树上所有节点的值均小于或等于它的根节点的值。
若右子树不为空,则右子树上所有节点的值均大于或等于它的根节点的值。
左、右子树也分别为二叉搜索树。
【二叉树】1,理论基础_第3张图片

1.1.4平衡二叉搜索树

平衡二叉搜索树的任何结点的左子树和右子树高度最多相差1。,并且左右两个子树都是一棵平衡二叉树。
【二叉树】1,理论基础_第4张图片

容器map、set、multimap、multiset的底层原理都是平衡二叉搜索树
所以map中key和set中的元素都是有序的

unordered map和unordered set的底层原理为哈希表

1.2存储方式

分为链式存储和线式存储

1.2.1链式存储

链式存储方式就用指针
【二叉树】1,理论基础_第5张图片

1.2.2线式存储

(用的少了解即可)

顺序存储的方式就是用数组。
【二叉树】1,理论基础_第6张图片

线式存储时,有一点i,他的左孩子下标为2i+1,他的右孩子下标为2i+2

1.3二叉树的遍历

分为深度优先搜索和广度优先搜索

1.3.1深度优先搜索

分为前序遍历、中序遍历、后续遍历
【二叉树】1,理论基础_第7张图片

1.3.1.1前序遍历(递归法、迭代法)

中左右

1.3.1.2中序遍历(递归法、迭代法)

左中右

1.3.1.3后序遍历(递归法、迭代法)

左右中

1.3.2广度优先搜索

1.3.2.1层次遍历(迭代法)

1.4二叉树的定义

struct TreeNode {
    int val;
    TreeNode *left;
    TreeNode *right;
    TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};

你可能感兴趣的:(代码随想录笔记,数据结构)