文章目录
- 前言
- 一、二叉树
- 1.1 满二叉树
- 1.2 完全二叉树
- 1.3 二叉搜索树
- 1.4 平衡二叉搜索树
- 二、二叉树的遍历
- 2.1 深度优先遍历(DFS)
- 2.2 广度优先遍历(BFS)
- 三、二叉树的代码定义
前言
提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
一、二叉树
二叉树的存储方式链式存储
1.1 满二叉树
1.2 完全二叉树
底部从左到右一定连续
堆 是一个 完全二叉树,在c++中为优先级队列(小顶堆或大顶堆)
1.3 二叉搜索树
二叉搜索树是一个有序树。
1 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值
2 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值
3 它的左、右子树也分别为二叉排序树
1.4 平衡二叉搜索树
它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。
C++中map、set、multimap,multiset的底层实现都是平衡二叉搜索树,所以map、set的增删操作时间时间复杂度是logn,
PS:unordered_map、unordered_set,unordered_map、unordered_set底层实现是哈希表。
二、二叉树的遍历
2.1 深度优先遍历(DFS)
前序、中序、后序遍历都是深度优先,可以使用递归法或是迭代法。
(二叉树不得不说递归,有的迭代法写起来会很吃力。递归的代码一般很简短,一看就会,一写就废。)
PS:
前序:中左右
中序:左中右
后序:左右中
2.2 广度优先遍历(BFS)
层序遍历(迭代法),使用队列来层层搜索
三、二叉树的代码定义
struct TreeNode{
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int t): val(t), left(NULL), right(NULL) {}
};
coding的时候用