58、对称的二叉树
来源:互联网 发布:手机百度云网络失败 编辑:程序博客网 时间:2024/05/17 09:04
题目描述:请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
思路:如下图所示从左到右三棵二叉树
前序遍历方式是根->左->右,我们可以定义一种前序遍历的镜像遍历方式,根->右->左,如果按照这两种遍历方式得到的序列是一样的,说明对称,图1和2可以说明这一点。
然鹅图图三这样的结构,无论怎么遍历,得到的都是6个7,显然它是不对称的,并不能因此将它判定为对称。所以怎么办呢?只要我们把遍历二叉树时遇到的空指针也考虑进来,所以二叉树实际上如下图所示:
代码:
/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class Solution {public: bool isSymmetrical(TreeNode* pRoot) { return isSymmetricalCore(pRoot,pRoot); } bool isSymmetricalCore(TreeNode* pRoot1,TreeNode* pRoot2){ if(pRoot1==NULL && pRoot2==NULL) return true; if(pRoot1==NULL || pRoot2==NULL) return false; if(pRoot1->val!=pRoot2->val) return false; //pRoot1的左和pRoot2的右要相等,pRoot1的右和pRoot2的左要相等,才能做到对称 return isSymmetricalCore(pRoot1->left,pRoot2->right) && isSymmetricalCore(pRoot1->right,pRoot2->left); }};
阅读全文
0 0
- 【58】对称的二叉树
- 58、对称的二叉树
- 对称的二叉树
- 对称的二叉树
- 对称的二叉树
- 对称的二叉树
- 对称的二叉树
- 对称的二叉树
- 对称的二叉树
- 对称的二叉树
- 对称的二叉树
- 对称的二叉树
- 对称的二叉树
- 对称的二叉树
- 对称的二叉树
- 对称的二叉树
- 对称的二叉树
- 对称的二叉树
- Opencv学习之开运算、闭运算、形态学梯度、顶帽、黑帽
- ffmpeg 多视频 画中画
- centos 7在线安装mysql步骤
- redis服务部署
- 一文读懂卷积神经网络CNN
- 58、对称的二叉树
- 支持手机NFC快捷支付的消费系统应用情况分析
- Jasperreport 与SpringMVC整合(使用CSVDataSource的应用)
- js的轮播
- RAD Studio XE8 unable to perform link[LME288]
- 集合关系图
- CStdioFile 写文件的一个坑
- react-native No bundle URL present
- java发送短信功能工具类及思路详解