二叉树经典题目
二叉树基础理论
二叉树主要有两种遍历方式:
- 深度优先遍历:先往深走,遇到叶子节点再往回走。(包括前序,中序,后序;指的就是中间节点的遍历顺序)
- 广度优先遍历:一层一层的去遍历。
- 二叉树节点的定义,C++代码如下:
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
经典思路
-
递归法 (https://www.bilibili.com/video/BV1Wh411S7xt/)
题目情景:遍历二叉树。
解题思路:1. 确定递归函数的参数和返回值 ; 2. 确定终止条件;3. 确定单层递归的逻辑
前序遍历:https://leetcode.cn/problems/binary-tree-preorder-traversal/description/
后序遍历: https://leetcode.cn/problems/binary-tree-postorder-traversal/description/
中序遍历: https://leetcode.cn/problems/binary-tree-inorder-traversal/description/ -
翻转二叉树 (https://leetcode.cn/problems/invert-binary-tree/description/)
-
二叉树的最大深度(https://leetcode.cn/problems/maximum-depth-of-binary-tree/description/)