标签:right return nullptr 刷题 que 二叉树 101 root left
101. 对称二叉树
题目链接
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/symmetric-tree/
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题目描述
题目分析
- 递归法
class Solution {
public:
bool isSymmetric(TreeNode* root) {
if(root == nullptr) return true;
return compare(root->left, root->right);
}
bool compare(TreeNode* left, TreeNode* right){//判断left 和right是否相等
if(left == nullptr && right == nullptr) return true;
if(left != nullptr && right != nullptr){
if(left->val == right->val){
//左右节点都不为空,且数值相同的情况:做下一层的判断
bool outside = compare(left->left, right->right);
bool insise = compare(left->right, right->left);
return outside && insise;
}else{
return false;
}
}else{
return false;
}
}
};
- 迭代法
队列-主要是判断对称结点的里侧和外侧是否相等。
成对成对的比较
class Solution {
public:
bool isSymmetric(TreeNode* root) {
//8
queue<TreeNode*> que;
if(root == nullptr) return true;
que.push(root->left);
que.push(root->right);
while(!que.empty()){
TreeNode*leftNode = que.front();que.pop();
TreeNode*rightNode = que.front();que.pop();
if(leftNode != nullptr && rightNode != nullptr){
if(leftNode->val == rightNode->val){
que.push(leftNode->left);
que.push(rightNode->right);
que.push(leftNode->right);
que.push(rightNode->left);
}else{
return false;
}
}else if(leftNode == nullptr && rightNode != nullptr || leftNode != nullptr && rightNode == nullptr){
return false;
}
}
return true;
}
};
栈
只要把queue改成statck
标签:right,return,nullptr,刷题,que,二叉树,101,root,left 来源: https://blog.csdn.net/qq_42771487/article/details/117589140
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。