二叉树理论基础
- 二叉树类型有:满二叉树、完全二叉树、二叉搜索树和平衡二叉搜索树。
- 存储方式有:链式存储(指针)和顺序存储(数组)。
- 遍历方式有:
- 深度优先:前中后序遍历(递归,迭代)
- 广度优先:层序遍历(迭代)
- 二叉树结点的定义
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode() : val(0), left(nullptr), right(nullptr) {}
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
};
二叉树的递归遍历
重点
- 二叉树的学习引入了递归的大量使用
- 递归三要素:
- 确定递归函数的参数和返回值
- 确定终止条件
- 确定单层递归的逻辑
- 递归开销大,内存占用久
C++ 实现(前序遍历)中,左,右
class Solution {
public:
vector<int> preorderTraversal(TreeNode* root) {
if (root == nullptr) return {};
vector<int> result;
(root, result);
result;
}
{
(root == ) ;
result.(root->val);
(root->left, result);
(root->right, result);
;
}
};