leetCode(15):Symmetric Tree
来源:互联网 发布:淘宝店铺怎么上架宝贝 编辑:程序博客网 时间:2024/06/02 04:53
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.
首先递归方法:
bool isChildSymmectric(TreeNode* node1,TreeNode* node2){if(node1==NULL && node2==NULL)return true;if(node1==NULL || node2==NULL || node1->val!=node2->val)return false;return isChildSymmectric(node1->left,node2->right) && isChildSymmectric(node1->right,node2->left);}bool isSymmetric(TreeNode* root){if(root==NULL)return true;return isChildSymmectric(root->left,root->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 isSymmetric(TreeNode* root) { if(root==NULL) return true; vector<TreeNode*> nodes; nodes.push_back(root); int nodesBegin=0; int nodesEnd=nodes.size(); while(nodesBegin<nodesEnd) { int b=nodesBegin; int e=nodes.size()-1; while(b<e) { if(nodes[b]==NULL && nodes[e]==NULL) { b++; e--; continue; } if((nodes[b]==NULL && nodes[e]) || (nodes[b] && nodes[e]==NULL) || (nodes[b]->val!=nodes[e]->val)) return false; nodes.push_back(nodes[b]->left); nodes.push_back(nodes[b]->right); b++; e--; } while(b<nodesEnd) { if(NULL==nodes[b]) { b++; continue; } nodes.push_back(nodes[b]->left); nodes.push_back(nodes[b]->right); b++; } nodesBegin=nodesEnd; nodesEnd=nodes.size(); } return true; }};
0 0
- leetCode(15):Symmetric Tree
- Leetcode - Tree - Symmetric Tree
- Leetcode - Tree - Symmetric Tree
- LeetCode[Tree]: Symmetric Tree
- [leetcode][tree] Symmetric Tree
- LeetCode: Symmetric Tree
- [Leetcode] Symmetric Tree
- LeetCode : Symmetric Tree
- leetcode 13:symmetric tree
- [LeetCode] Symmetric Tree - Recursively
- [LeetCode] Symmetric Tree - Iteratively
- [LeetCode] Symmetric Tree
- [LeetCode]Symmetric Tree
- Leetcode:Symmetric Tree
- [Leetcode]Symmetric Tree
- Leetcode: Symmetric Tree
- [leetcode]Symmetric Tree
- LeetCode-Symmetric Tree
- Windows Phone 获取本地IP地址
- slick与mysql
- 【麦可网】Cocos2d-X跨平台游戏开发学习笔记---第十三课:Cocos2D-X内存管理4-6
- 增强型for循环的各个参数
- POJ 1611 The Suspects(并查集)
- leetCode(15):Symmetric Tree
- Linux Bash 快捷键大全
- solr/solrj按id进行索引更新
- 做题记录
- Android中使用Xml内置解析器pull来解析Xml原始资源
- Uva1586
- 日语学习之沪江N3基础 20150621 -4
- ubuntu14.04 安装 sublime text3
- 理解Theano的Scan函数