学习文章链接:代码随想录
一、226.翻转二叉树
题目链接:226.翻转二叉树
方法1:(层序遍历)
class Solution {
public:
TreeNode* invertTree(TreeNode* root) {
// vector<vector<int>> results;
queue<TreeNode*> que;
if(root==nullptr)return root;
que.push(root);
while(!que.empty()){
int size=que.size();
vector<int> result;
for(int i=0;i<size;i++){
TreeNode* node=que.front();
result.push_back(node->val);
que.pop();
if(node->left||node->right)swap(node->left,node->right);
if(node->left)que.push(node->left);
if(node->right)que.push(node->right);
}
}
return root;
}
};
二、101. 对称二叉树
题目链接:101. 对称二叉树
思路:后序遍历,递归遍历,分为内侧外侧去比较
方法1:
class Solution {
public:
bool compare(TreeNode* left,TreeNode* right){
if(left==nullptr&&right==nullptr)return true;
else if(left!=nullptr&&right==nullptr)return false;
else if(left==nullptr&&right!=nullptr)return false;
else if(left->val!=right->val)return false;
bool outside=compare(left->left,right->right);
bool inside=compare(left->right,right->left);
return outside && inside;
}
bool isSymmetric(TreeNode* root) {
if(root==nullptr)return true;
else return compare(root->left,root->right);
}
};
三、104.二叉树的最大深度
题目链接:104.二叉树的最大深度
思路:见前一篇代码随想录算法训练营第11天|递归遍历、迭代遍历、统一迭代、层序遍历
四、111.二叉树的最小深度
题目链接:111.二叉树的最小深度
思路:见前一篇代码随想录算法训练营第11天|递归遍历、迭代遍历、统一迭代、层序遍历