LeetCode 101. Symmetric Tree
来源:互联网 发布:如何做好淘宝 编辑:程序博客网 时间:2024/05/21 00:14
Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).
For example, this binary tree [1,2,2,3,4,4,3]
is symmetric:
1 / \ 2 2 / \ / \3 4 4 3
But the following [1,2,2,null,3,null,3]
is not:
1 / \ 2 2 \ \ 3 3
Note:
Bonus points if you could solve it both recursively and iteratively.
recursively:用left->right和right->left比较,用left->left和right->right比较
/** * 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 symmetric(TreeNode* left, TreeNode* right){ if(!left && !right) return true; if(left && right && left->val == right->val){ return symmetric(left->left, right->right) && symmetric(left->right, right->left); } return false; } bool isSymmetric(TreeNode* root) { if(!root) return true; return symmetric(root->left, root->right); }};iteratively:BFS
/** * 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) return true; queue<TreeNode*> q1; queue<TreeNode*> q2; vector<TreeNode*> v; q1.push(root); while(!q1.empty()){ TreeNode* node = q1.front(); q1.pop(); q2.push(node); if(q1.empty()){ while(!q2.empty()){ TreeNode* node = q2.front(); q2.pop(); v.push_back(node); if(node){ q1.push(node->left); q1.push(node->right); } } int i = 0, j = v.size() - 1; while(i < j){ if(!v[i] && !v[j]){ i ++; j --; }else if(!v[i] && v[j] || v[i] && !v[j]) return false; else if(v[i]->val == v[j]->val){ i ++; j --; }else return false; } v.clear(); } } 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
- 8086汇编语言 段地址与偏移地址存在CS,IP寄存器中
- 8086汇编语言 转移指令是什么
- Leetcode 125. Valid Palindrome (Easy) (cpp)
- Chrome 开发工具之Timeline
- hdu4349xiaoming's hope(Lucas定理和位运算)
- LeetCode 101. Symmetric Tree
- jQuery基本选择器的使用
- JAVA 中BIO,NIO,AIO的理解
- 提取不重复的整数
- Android调用手机摄像头和相册获取图片
- 51 nod 1961 比大小
- 数据结构实验之栈六:下一较大值(二)
- ListView显示多种类型的条目
- Hadoop学习笔记1:伪分布式环境搭建