LeetCode *** 101. Symmetric Tree
来源:互联网 发布:中云数据科技有限公司 编辑:程序博客网 时间:2024/04/29 23:21
题目:
Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).
For example, this binary tree is symmetric:
1 / \ 2 2 / \ / \3 4 4 3
But the following is not:
1 / \ 2 2 \ \ 3 3
Note:
Bonus points if you could solve it both recursively and iteratively.
分析:
既然是镜面,那么直接翻转,然后查看翻转的树与原树是否一致。。我承认这个办法很low。。我先刷完这些题再说吧。。
代码:
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: bool isSymmetric(TreeNode* root) { if(root==NULL)return true; TreeNode *mirror=new TreeNode(root->val); queue<TreeNode*> reTree; queue<TreeNode*> reTreeMirror; reTree.push(root); reTreeMirror.push(mirror); while(!reTree.empty()){ TreeNode* tmp=reTree.front(); reTree.pop(); TreeNode* tmpMirror=reTreeMirror.front(); reTreeMirror.pop(); if(tmp->left){ tmpMirror->right=new TreeNode((tmp->left)->val); reTree.push(tmp->left); reTreeMirror.push(tmpMirror->right); } if(tmp->right){ tmpMirror->left=new TreeNode((tmp->right)->val); reTree.push(tmp->right); reTreeMirror.push(tmpMirror->left); } } queue<TreeNode*> cr; queue<TreeNode*> cm; cr.push(root); cm.push(mirror); while(!cr.empty()){ TreeNode* tmpR=cr.front(); TreeNode* tmpM=cm.front(); cr.pop(); cm.pop(); if((tmpR->left==NULL&&tmpM->left!=NULL)||(tmpM->left==NULL&&tmpR->left!=NULL)||(tmpR->right==NULL&&tmpM->right!=NULL)||(tmpM->right==NULL&&tmpR->right!=NULL)||tmpR->val!=tmpM->val)return false; if(tmpR->left){ cr.push(tmpR->left); cm.push(tmpM->left); } if(tmpR->right){ cr.push(tmpR->right); cm.push(tmpM->right); } } return true; }};
0 0
- LeetCode 101. Symmetric Tree
- [LeetCode]101.Symmetric Tree
- 【LeetCode】101.Symmetric Tree
- [Leetcode] 101. Symmetric Tree
- LeetCode --- 101. Symmetric Tree
- [leetcode] 101.Symmetric Tree
- LeetCode : 101. Symmetric Tree
- [leetcode]101.Symmetric Tree
- Leetcode 101. Symmetric Tree
- 101. Symmetric Tree LeetCode
- [LeetCode]101. Symmetric Tree
- [LeetCode]101. Symmetric Tree
- [LeetCode]101. Symmetric Tree
- leetcode 101. Symmetric Tree
- LeetCode#101. Symmetric Tree
- Leetcode 101. Symmetric Tree
- Leetcode 101. Symmetric Tree
- LeetCode *** 101. Symmetric Tree
- 使用JSP+Servlet技术生成报表
- 【JQuery】图片放大镜插件——jqzoom
- Unicode中文和特殊字符的编码范围
- 在eclipse中设计BPMN 2.0工作流定义的根本步骤
- Android开发常见异常与错误系列(二)
- LeetCode *** 101. Symmetric Tree
- QT5 OpenGL(七, 透明度设置)
- 给每一行的修改加一个事件
- ssh免密码登录
- 画江湖之独门暗器指针
- final, finally, finalize
- mybatis中的#和$的区别
- 任务的批量提交invokeAll两种方法的区别
- 欢迎使用CSDN-markdown编辑器