226.翻转二叉树 (优先掌握递归)
二叉树被玩出花了
class Solution {
public:
TreeNode* invertTree(TreeNode* root) {
if(root == nullptr){
return root;
}
swap(root->left, root->right);
invertTree(root->left);
invertTree(root->right);
return root;
}
};
101. 对称二叉树
class Solution {
public:
bool isSame(TreeNode* p, TreeNode *q){
if(p == nullptr && q == nullptr){
return true;
}else if(p == nullptr || q == nullptr){
return false;
}else if(p->val != q->val){
return false;
}else{
return isSame(p->left, q->right) && isSame(p->right, q->left);
}
}
bool isSymmetric(TreeNode* root) {
if(root == nullptr){
return true;
}
return isSame(root->left, root->right);
}
};
104.二叉树的最大深度 (优先掌握递归)
class Solution {
public:
int maxDepth(TreeNode* root) {
if(root == nullptr){
return 0;
}
if(root->left == nullptr && root->right == nullptr){
return 1;
}
int maxD = 0;
if(root->left != nullptr){
maxD = max(maxDepth(root->left), maxD);
}
if(root->right != nullptr){
maxD = max(maxDepth(root->right), maxD);
}
return maxD + 1;
}
};
111.二叉树的最小深度 (优先掌握递归)
class Solution {
public:
int minDepth(TreeNode* root) {
if(root == nullptr){
return 0;
}
if(root->left == nullptr && root->right == nullptr){
return 1;
}
int min_depth = INT_MAX;
if(root->left != nullptr){
min_depth = min(minDepth(root->left), min_depth);
}
if(root->right != nullptr){
min_depth = min(minDepth(root->right), min_depth);
}
return min_depth + 1;
}
};