LeetCode 101. Symmetric Tree
来源:互联网 发布:smap关系 知乎 编辑:程序博客网 时间:2024/05/29 19:17
Description
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
Solution
利用深度优先搜索DFS来递归。
#include <iostream>using namespace std;struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x): val(x), left(NULL), right(NULL) {}};void pre_create_tree(TreeNode* &bt) { int n; cin >> n; if (n == -1) bt = NULL; else { bt = new TreeNode(n); pre_create_tree(bt->left); pre_create_tree(bt->right); }}bool isEqual(TreeNode* p, TreeNode* q) { if (!p && !q) return true; if ((p && !q) || (!p && q) || (p->val != q->val)) return false; if (p->val == q->val) return isEqual(p->left, q->left) && isEqual(p->right, q->right);}bool issymmetric(TreeNode* left, TreeNode* right) { if (!left && !right) return true; if (left && !right || !left && right || left->val != right->val) return false; return issymmetric(left->left, right->right) && issymmetric(left->right, right->left);}bool isSymmetric(TreeNode* root) { if (!root) return true; return issymmetric(root->left, root->right);}void levorder (TreeNode* bt) { TreeNode* q[30]; int front = 0,rear = 0; TreeNode* p; if (bt != NULL) { rear = (rear+1) % 30; q[rear] = bt; } while (front != rear) { front = (front+1) % 30; p=q[front]; cout << p->val <<' '; if (p->left != NULL) { rear = (rear+1) % 30; q[rear] = p->left; } if (p->right != NULL) { rear = (rear+1) % 30; q[rear] = p->right; } }}void printbtree(TreeNode* bt) { if (bt==NULL) return; else { cout << bt->val; if (bt->left!=NULL||bt->right!=NULL) { cout << '('; printbtree(bt->left); if (bt->right!=NULL) cout << ','; printbtree(bt->right); cout << ')'; } }}int main() { TreeNode* bt1; //TreeNode* bt2; pre_create_tree(bt1); //pre_create_tree(bt2); levorder(bt1); cout << endl; //levorder(bt2); //cout << endl; //cout << isEqual(bt1, bt2); //cout << endl; cout << isSymmetric(bt1); return 0;}
阅读全文
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
- cocos2dx opengl入门系列四-显示图片
- Win10+VS2015下配置OpenCV3.2教程
- 转载:图像傅里叶变换
- mac出现"文件损坏"提示的解决办法
- require.ensure和require-amd
- LeetCode 101. Symmetric Tree
- windows内核exploit训练项目HackSysExtremeVulnerableDriver(HEVD)-未初始化栈变量
- java导入、导出excel
- 如何使用strace+pstack利器分析程序性能
- 位运算
- laravel资源加载路径设置
- c++小结
- 前端面试题小集
- iOS POST上传文件~笔记