101. Symmetric Tree(DFS)
来源:互联网 发布:服务行业大数据案例 编辑:程序博客网 时间:2024/06/05 15:08
1. 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 n
1 / \ 2 2 \ \ 3 3
2. Analysis
直接的想法就是取出每一层,在该层做左右对称比较。思想与逐层遍历是类似的。时间复杂度为
3. Algorithm achievement
/** * 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; if(root->left == NULL && root->right == NULL) return true; if(root->left == NULL || root->right == NULL) return false; vector<TreeNode*> tmp; TreeNode* node = NULL; tmp.push_back(root); while(!tmp.empty()) { for(int i = 0, n = tmp.size(); i < n; i++) { node = tmp.front(); tmp.erase(tmp.begin()); /*判断条件这里需要细心,有点坑*/ if(node != NULL) { tmp.push_back(node->left); tmp.push_back(node->right); } } if(tmp.size()%2 != 0) return false; for(int i = 0, j = tmp.size()-1; i < tmp.size()/2; i++, j--) { if(tmp[i] == NULL && tmp[j] == NULL ) continue; if(tmp[i] == NULL || tmp[j] == NULL ) return false; if(tmp[i] != NULL && tmp[j] != NULL) { if((tmp[i])->val != (tmp[j])->val) return false; } else if(tmp[i] != NULL || tmp[j] != NULL) return false; } } return true; } };
贴个图防坑!注意NULL结点也会参与比较的,所以需要接入向量!
阅读全文
0 0
- 101. Symmetric Tree(DFS)
- DFS:101. Symmetric Tree
- 101:Symmetric Tree【树】【DFS】
- LeetCode 101 Symmetric Tree (DFS)
- 101. Symmetric Tree--DFS(递归)/BFS(queue+迭代)
- Tree-----镜像树(101. Symmetric Tree)
- Leetcode:101. Symmetric Tree(JAVA)
- 101. Symmetric Tree 对称树 (难点!)
- Leetcode 101. Symmetric Tree( C++版)
- 【leetcode】101. Symmetric Tree(great)
- LeetCode 101. Symmetric Tree(Python)
- 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
- centos 安装 docker 及基础命令使用
- HDU
- Runtime的入门与应用之六-实际运用
- logo在线制作
- java 反射
- 101. Symmetric Tree(DFS)
- 算法新启程
- redis查看版本号 · 进入命令行
- zookeeper的伪集群搭建模式
- 拦截导弹
- 什么是扇入和扇出
- 在中科曙光I620-G20服务器上安装Windows 2008 R2 系统步骤
- 计蒜客-2017 ACM-ICPC 亚洲区(西安赛区)网络赛Trig Function(数学公式推理)
- 二叉树中和为某一值的路径