提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
LeetCode226.翻转二叉树
TreeNode* invertTree(TreeNode* root) {
if(!root) return nullptr;
else{
TreeNode* tmp = new TreeNode();
tmp = root->right;
root->right = root->left;
root->left = tmp;
if(root->left)invertTree(root->left);
if(root->right)invertTree(root->right);
return root;
}
}
LeetCode101.对称二叉树
class Solution {
public:
bool isSymmetric(TreeNode* root) {
return check(root->left,root->right);
}
bool check(TreeNode* p, TreeNode* q){
if(!p && !q )return true;
if(!p || !q || p->val != q->val)return false;
else
return check(p->left,q->right)&&check(p->right,q->left);
}
};
LeetCode104.二叉树的最大深度
class Solution {
public:
int maxDepth(TreeNode* root) {
if(root == nullptr)return 0;
else
return 1 + max(maxDepth(root->left), maxDepth(root->right));
}
};
LeetCode111.二叉树的最小深度
class Solution {
public:
int minDepth(TreeNode* root) {
if(!root)return 0;
else if(!root->left && !root->right)
return 1;
else if(!root->left && root->right)
return 1 + minDepth(root->right);
else if(root->left && !root->right)
return 1 + minDepth(root->left);
else
return 1 + min(minDepth(root->right), minDepth(root->left));
}
};