对称二叉树
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了对称二叉树,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2135字,纯文字阅读大概需要4分钟。
内容图文
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
* };
*/
// class Solution {
// public:
// bool helper(TreeNode* p, TreeNode* q){
// //终止条件
// if(!p && !q) return true;
// if(!p || !q) return false;
// if(p->val != q->val) return false;
// //递归逻辑
// return helper(p->left, q->right) && helper(p->right, q->left);
// }
// bool isSymmetric(TreeNode* root) {
// //若空
// if(root == nullptr) return true;
// return helper(root, root);
// }
// };
//迭代,队列
// class Solution{
// public:
// bool isSymmetric(TreeNode* root){
// //若空
// if(root == nullptr) return true;
// queue<TreeNode*> que;
// que.push(root);
// que.push(root);
// while(!que.empty()){
// TreeNode* leftnode = que.front();que.pop();
// TreeNode* rightnode = que.front();que.pop();
// if(!leftnode && !rightnode) continue;//都为空
// if(!leftnode || !rightnode || (leftnode->val != rightnode->val)) return false;
// //压入新值
// que.push(leftnode->left);
// que.push(rightnode->right);
// que.push(leftnode->right);
// que.push(rightnode->left);
// }
// return true;
// }
// };
//迭代,栈
class Solution{
public:
bool isSymmetric(TreeNode* root){
//若空
if(root == nullptr) return true;
//
stack<TreeNode*> stk;
stk.push(root);
stk.push(root);
while(!stk.empty()){
//左右节点比较
TreeNode* leftnode = stk.top(); stk.pop();
TreeNode* rightnode = stk.top();stk.pop();
//若空
if(!leftnode && !rightnode) continue;
//非空
if(!leftnode || !rightnode || (leftnode->val != rightnode->val)) return false;
//压入新值
stk.push(leftnode->left);
stk.push(rightnode->right);
stk.push(leftnode->right);
stk.push(rightnode->left);
}
return true;
}
};
内容总结
以上是互联网集市为您收集整理的对称二叉树全部内容,希望文章能够帮你解决对称二叉树所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。