[Lc]110平衡二叉树

题目 题解 二叉树结构如下: //Definition for a binary tree node. struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {} }; 1. 递归法 时间复杂度: $O(n\log n)$ 空间复杂度: $O(n)$ class Solution { public: bool isBalanced(TreeNode* root) {//两种方法。1

[Lc]107二叉树的层次遍历2

题目 题解 二叉树结构如下: //Definition for a binary tree node. struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {} }; 1. 递归法 递归法有两种思路,一种直接翻转最终数组,一种在插入时就改变顺序

[Lc]104二叉树的最大深度

题目 题解 二叉树结构如下: //Definition for a binary tree node. struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {} }; 1. 递归法 时间复杂度: $O(N)$ 空间复杂度: $O(N)$ class Solution {//这个题就是遍历然后存最大

[Lc]103二叉树的锯齿层次遍历

题目 题解 二叉树结构如下: //Definition for a binary tree node. struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {} }; 1.迭代法 class Solution {//和#102类似,有所改变,有迭代法和递归法两种方法

[Lc]102二叉树的层次遍历

题解 题解 二叉树结构如下: //Definition for a binary tree node. struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {} }; 1. 队列迭代法 class Solution {//两种方法。1、队列迭代法。 public: vector<vector<int>> levelOrder(TreeNode* root) { vector<vector<int>> res; if(!root) return res; /

[Lc]101对称二叉树

题解 题解 二叉树结构如下: //Definition for a binary tree node. struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {} }; 1. 递归法 class Solution {//三种方法。1、递归法。有点像#100 public: bool isSymmetric(TreeNode* root) { if(!root) return t

[Lc]100相同的树

题目 题解 这道题就是遍历。这里写一个先序遍历,其他遍历方式见相应例题。 二叉树的遍历包括DFS(深度优先搜索)的先序遍历、中序遍历、后序遍历。 还

[Lc]98验证二叉搜索树

题目 题解 TreeNode的定义: /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ 1. 直接递归法 class Solution {//三种方法。1、直接递归

[Lc]95不同的二叉搜索树2

题目 题解 定义二叉树: //Definition for a binary tree node. struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; 1. 递归法 class Solution {//#96的升级版。两种方法。1、递归 public: vector<TreeNode*> generateTrees(int n) { vector<TreeNode*> ans; if(n==0) return a