LeetCode 100. Same Tree && 101. Symmetric Tree
来源:互联网 发布:caffe 样本制件 编辑:程序博客网 时间:2024/06/06 23:03
1. 题目描述
100
Given two binary trees, write a function to check if they are equal or not.
Two binary trees are considered equal if they are structurally identical and the nodes have the same value.
101
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.
2. 思路
使用递归, 非常简单的思路。
3. code
3.1 same tree
class Solution {public: bool isSameTree(TreeNode *p, TreeNode *q) { if ((p == nullptr && q != nullptr) || (p != nullptr && q == nullptr)) return false; if (p == nullptr && q == nullptr) return true; return (p->val == q->val) && isSameTree(p->left, q->left) && isSameTree(p->right, q->right); }};
3.2 symmetric tree
class Solution {public: bool isSymmetric(TreeNode* root) { if (!root) return true; return isEqual(root->left, root->right); }private: bool isEqual(TreeNode * p1, TreeNode * p2){ if (!p1 && p2 || p1 && !p2) return false; if (!p1 && !p2) return true; return p1->val == p2->val && isEqual(p1->left, p2->right) && isEqual(p1->right, p2->left); }};
4. 大神代码
实际上是一个BFS 搜索的算法, 使用BFS 对左右两个子树进行搜索, 不过一个是从左向右, 另一个是从右向左, nice code
class Solution {public: bool isSymmetric(TreeNode *root) { TreeNode *left, *right; if (!root) return true; queue<TreeNode*> q1, q2; q1.push(root->left); q2.push(root->right); while (!q1.empty() && !q2.empty()){ left = q1.front(); q1.pop(); right = q2.front(); q2.pop(); if (NULL == left && NULL == right) continue; if (NULL == left || NULL == right) return false; if (left->val != right->val) return false; q1.push(left->left); q1.push(left->right); q2.push(right->right); q2.push(right->left); } return true; }};
0 0
- LeetCode 100. Same Tree && 101. Symmetric Tree
- [LeetCode] Same Tree、Symmetric Tree
- LeetCode-Same Tree & Symmetric Tree
- LeetCode-- Same Tree & Symmetric Tree
- 100. Same Tree 101. Symmetric Tree
- 【leetcode】Same Tree and Symmetric Tree-----Java
- Same Tree & Symmetric Tree
- same-tree/symmetric-tree
- (二叉树是否相同或者堆成)LeetCode#100. Same Tree #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
- Leetcode 101. Symmetric Tree
- HDU 2188 悼念512汶川大地震遇难同胞——选拔志愿者 巴什博奕
- android的下拉框添加数据
- spring mvc seesion超时iframe布局会造成登陆框内嵌问题
- 没做过自动化测试的一些初级想法
- Android 中 AutoCompleteTextView 自动补全功能
- LeetCode 100. Same Tree && 101. Symmetric Tree
- 内存管理
- java并发编程(二)-休眠、优先级
- dubbo简单实例
- 手把手教你用Java制作原生态的报表
- 浏览器跨域问题的总结
- WMware克隆虚拟机后出现网络无法连接的问题
- windows下一次性opencv配置
- Ali RocketMQ与Kafka对比