1 二叉树的镜象
class Solution {
public:
ThreeNode* mirrorTree(TreeNode* root) {
if(root == nullptr) return nullptr;
ThreeNode* tmp = root -> left;
root -> left = mirrorTree(root -> right);
root -> right = mirrorTree(tmp);
return root;
}
}
2对称的二叉树
class Solution {
public:
bool pret(ThreeNode* L, ThreeNode* R) {
if(L == 0 && R == 0) return true;
if(L == 0 || R == 0 || L -> val != R -> val) return false;
return pret(L -> right, R -> left) && pret(L -> left, R -> right);
}
bool isSymmetric(ThreeNode* root) {
if(root == nullptr) return true;
return pret(root -> left, root -> right);
}
}
3二叉树的深度
class Solution {
public:
int maxDepth(ThreeNode* root) {
if(root == nullptr) return 0;
else
{
return max(maxDepth(root -> left), maxDepth(root -> right)) + 1;
}
}
}
4平衡二叉树
class Solution {
public:
int height(ThreeNode* root) {
if(root == nullptr) return 0;
else
return max(height(root -> left), height(root -> right)) + 1
}
bool isBalanced(ThreeNode* root) {
if(root == nullptr) return true;
else
{
return abs(height(root -> left) - height(root -> right)) <= 1 && isBalanced(root -> left) && isBalanced(root -> right);
}
}
}