101、Symmetric Tree
2015-12-08 11:10
344 查看
题目:
iven a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).
For example, this binary tree is symmetric:
But the following is not:
Note:
Bonus points if you could solve it both recursively and iteratively.
解题思路:
递归
c++版本:
迭代版本:
iven 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.
解题思路:
递归
c++版本:
class Solution { public: bool symmetric(TreeNode* node1,TreeNode* node2){ if(!node1)return !node2; if(!node2)return !node1; if(node1->val!=node2->val)return false; return symmetric(node1->left,node2->right) && symmetric(node1->right,node2->left); } bool isSymmetric(TreeNode* root) { if(!root)return true; return symmetric(root->left,root->right); } };python版本:
class Solution(object): def isSymmetric(self, root): """ :type root: TreeNode :rtype: bool """ def symmetric(node1,node2): if(node1==None):return node2==None elif(node2==None):return node1==None elif(node1.val!=node2.val):return False return symmetric(node1.left,node2.right) and symmetric(node1.right,node2.left) if(root==None):return True return symmetric(root.left,root.right)
迭代版本:
<pre name="code" class="cpp">class Solution { public: bool isSymmetric(TreeNode* root) { if(!root)return true; queue<TreeNode*> q1, q2; q1.push(root->left); q2.push(root->right); while(!q1.empty() && !q2.empty()) { TreeNode* node1=q1.front(); TreeNode* node2=q2.front(); q1.pop();q2.pop(); if(!node1 && !node2) continue; if(!node1 || !node2) return false; if(node1->val!=node2->val) return false; q1.push(node1->left);q1.push(node1->right); q2.push(node2->right);q2.push(node2->left); } if(q1.empty() && q2.empty()) return true; else return false; } };
相关文章推荐
- Oracle APEX 4.2发布RESTful Webservice
- LeetCode 211 Add and Search Word - Data structure design
- cygwin gcc 动态链接库问题
- saltstack相关
- Something
- 图像滤镜艺术---乐高像素拼图特效滤镜的代码实现
- 源码安装lamp
- Objc-C 知识点回顾 六 字典、集合
- Gosn的使用
- leetcode -- Lowest Common Ancestor of a Binary Tree -- 重点
- opencv中的矩阵操作
- db2 外置设备建立数据库步骤
- 【Codeforces Round 271 (Div 2)D】【DP】Flowers 黑色必须连续摆放k,长度为n的摆放方案数
- SWD与JTAG之间的区别
- Objc-C 知识点回顾 五 NSArray、NSMutableArray
- 慕课网:Android异步加载AsyncTask项目实战中
- Java 中有关数组的操作
- MongoDB学习(二):数据类型和基本概念
- 允许php执行linux命令
- Day_7访问权限