LeetCode 100. Same Tree && 101. Symmetric Tree
2016-04-07 13:23
399 查看
1. 题目描述
100Given 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 codeclass 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; } };
相关文章推荐
- 没做过自动化测试的一些初级想法
- Docker初学
- java导出pdf
- Spring 的下载、安装和使用
- HDU 2693 Bone Collector II
- FZU2030(括号匹配)
- Fox And Names
- 赛马问题
- MySQL(7)-多源复制
- CentOS7下二进制文件安装MySQL5.6
- UITextField的使用
- php计算字符串长度:utf8编码,包含中文
- 2016年三月份资源实力排行榜
- POJ2253 Frogger
- Swift、OC混编用到的Bridging-Header.h
- 从.NET转JAVA开发
- Android Studio 简介
- python3学习笔记1--TypeError: 'dict' object is not callable的解决
- unity3d动画帧事件回调脚本必须直接挂在模型上
- Hibernate 下载、安装和使用