【二叉树11】判断一颗二叉树本身是否为镜像
2013-09-11 11:59
357 查看
【问题】如题目
output : true
output : false
【code】
大牛们非递归的方法如下,实际上是模拟递归的思路,先建立两个栈,分别存放左子树和右子树
output : true
output : false
【code】
bool isSymmetricHelper(TreeNode *rnode, TreeNode *lnode) { if ((lnode || rnode) == NULL) return true; if ((lnode && rnode) == NULL) return false; if (lnode->val == rnode->val) return isSymmetricHelper(lnode->left, rnode->right) && isSymmetricHelper(lnode->right, rnode->left); else return false; } bool isSymmetric(TreeNode *root) { // Start typing your C/C++ solution below // DO NOT write int main() function if (root == NULL) return true; return isSymmetricHelper(root->right, root->left); }
大牛们非递归的方法如下,实际上是模拟递归的思路,先建立两个栈,分别存放左子树和右子树
bool isSymmetric(TreeNode *root) { if(root == NULL) return true; queue<TreeNode *> lf, rt; lf.push(root->left); rt.push(root->right); TreeNode *l, *r; while(!lf.empty() && !rt.empty()) { l = lf.front(); r = rt.front(); lf.pop(); rt.pop(); if(l == NULL && r == NULL) continue; if(l == NULL || r == NULL) return false; if(l->val != r->val) return false; lf.push(l->left); lf.push(l->right); rt.push(r->right); rt.push(r->left); } if(lf.empty() && rt.empty()) return true; else return false; }
相关文章推荐
- day12之判断一棵二叉树是否是平衡二叉树+求一颗二叉树的镜像+判断一个数在二维数组中是否存在
- (树)判断一颗二叉树是否为镜像对称
- 判断一棵二叉树是否是平衡二叉树/求一颗二叉树的镜像
- 每日一题之判断一棵二叉树是否是平衡二叉树以及求一颗二叉树的镜像
- 判断一棵二叉树是否是平衡二叉树并求一颗二叉树的镜像——题集十
- 判断一棵二叉树是否是平衡二叉树/求一颗二叉树的镜像
- 判断一棵二叉树是否是平衡二叉树/求一颗二叉树的镜像
- 二叉树--判断一棵二叉树是否是平衡二叉树&&求一颗二叉树的镜像
- -判断一棵二叉树是否是平衡二叉树/求一颗二叉树的镜像
- 【面试题】剑指Offer-39-求二叉树的深度和判断一颗树是否为平衡二叉树
- 请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
- 二叉树面试题-镜像与判断是否为完全二叉树
- 判断二叉树是否平衡、求二叉树的镜像、按行列有序矩阵中快速查找元素是否存在
- 判断一颗二叉树是否为平衡二叉树(AVL)
- 101. Symmetric Tree | 判断二叉树是否为镜像二叉树
- 判断一颗二叉树是否为平衡二叉树
- 判断一颗二叉树是否是另一颗树的子树
- 百度笔试题:判断一个二叉树是否是另一颗二叉树的子树
- 每日一题——判断二叉树是否平衡,求一棵二叉树的镜像
- 每日一练(40) - 判断二叉树是否是一颗平衡二叉树