[LeetCode]对称二叉树
来源:互联网 发布:windows.iso怎样安装 编辑:程序博客网 时间:2024/06/07 00:29
[LeetCode]对称二叉树
0.题目
leetcode : 101. Symmetric Tree
1.题目描述
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
2.题目分析
二叉树中对称的定义我们可以用下面一张图来解释 :
| 1 / | \ 2 | 2 / \ | / \ 3 4 | 4 3 / \ | / \ 6 7 | 7 6 |
仔细观察示意图我们可以发现:
1. 整棵树关于中间虚线对称
2. 左右子树也关于虚线对称
3. 就节点2而言,左边节点2的左子树和右边节点2的右子树对称;左边节点2的右子树和右边节点2的左子树对称。
由此我们可以得到递归的判断方式:
1. 左节点的值与右节点的值相同
2. 左节点的右子树与右节点的左子树对称
3. 左节点的左子树与右节点的右子树对称
通过递归的判断我们就能很简单的判断一棵树是否属于对称二叉树。
3.代码实现
完整代码:
bool isSymmetric(TreeNode *root) { if (root == NULL) { return true; } else if (root->left == NULL && root->right == NULL) { return true; } //只有根节点或者连根节点都没有 return symmetric(root->left, root->right);}bool symmetric(TreeNode *left, TreeNode *right) { //判断两棵子树是否关于中线对称 if (left == NULL && right == NULL) { return true; // 子树为空树 } else if (left== NULL || right == NULL) { return false; // 一棵树为空而另一棵非空 } if (left->val != right->val) { return false; // 值不同肯定不对称 } return symmetric(left->left, right->right) && symmetric(left->right, right->left); //递归判断}
4.结束
解题关键在于找到递归的定义,代码实现并不难。
阅读全文
0 0
- [LeetCode]对称二叉树
- 【leetcode 二叉树对称判断】Symmetric Tree
- Symmetric Tree[LeetCode]对称二叉树
- Leetcode Symmetric Tree 对称二叉树
- LeetCode基础--二叉树-判断是否对称
- LeetCode(Symmetric Tree)判断二叉树是否是对称的
- Leetcode-Symmetric Tree——判断二叉树是否对称
- leetcode 101.Symmetric Tree-对称二叉树|深度遍历
- 二叉树------对称二叉树
- 二叉树-对称树
- 对称二叉树
- 对称的二叉树
- 对称二叉树
- 对称的二叉树
- 判断对称二叉树
- 对称的二叉树
- 对称的二叉树
- 对称的二叉树
- 阿里云---阿里云服务器ECS安装jdk环境
- Nginx expires缓存
- centos 6.5 忘记root密码的解决办法
- 算法时间复杂度与空间复杂度
- Git基本常用命令
- [LeetCode]对称二叉树
- Comutil类
- CocosCreator-Label
- Java读写txt文件
- 师兄面试心得
- strlen, strcat, strcmp, strcpy函数
- HBase (2)---数据存储结构
- Intellij IDEA2017 scala环境搭建
- React 16 新特性