题目描述

请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
/*
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){if(pRoot==NULL)return true;TreeNode* p1=pRoot;TreeNode* p2=pRoot;PreSymmetrical(p1);            //标准的前序遍历,先遍历左子树,再根结点,最后遍历右子树DefineSymmetrical(p2);         //自定义的对称前序遍历,先遍历右子树,再根结点,最后遍历for(int i=0;i<vec1.size();i++) //左子树注意一些特殊情况,比如所有的元素都是相同的,两种{                            //遍历结果可能是一样的,事实上是非对阵的(比如奇数个相同if(vec1[i]!=vec2[i])     //的值明显不是对阵的,但两种遍历结果相同),因此我们将所return false;        //有的结点的左右结点为空时记为NULL。}return true;}void PreSymmetrical(TreeNode*p1){if(p1==NULL){vec1.push_back(0); return;}vec1.push_back(p1->val);PreSymmetrical(p1->left);PreSymmetrical(p1->right);}void DefineSymmetrical(TreeNode*p2){if(p2==NULL){vec2.push_back(0); return;}vec2.push_back(p2->val);DefineSymmetrical(p2->right);DefineSymmetrical(p2->left);}
private:vector<int> vec1,vec2;    //vec1和vec2分别用来存储前序遍历和自定义对称前序遍历的结果
};

剑指offer面试题[59]-对称的二叉树相关推荐

  1. 剑指offer面试题28. 对称的二叉树(递归)

    题目描述 请实现一个函数,用来判断一棵二叉树是不是对称的.如果一棵二叉树和它的镜像一样,那么它是对称的. 思路 详见链接 代码 class Solution:def isSymmetric(self, ...

  2. 剑指offer——面试题59:对称的二叉树

    剑指offer--面试题59:对称的二叉树 Solution1: 书上的思路就挺好的 书中的思路:针对二叉树的前序遍历,定义一种遍历算法,先遍历右子结点再遍历左子结点,并考虑进NULL的情况 /* s ...

  3. 【重点】剑指offer——面试题62:序列化二叉树

    剑指offer--面试题62:序列化二叉树 Solution1: 参考网址:https://www.nowcoder.com/profile/6475323/codeBookDetail?submis ...

  4. 剑指offer——面试题60:把二叉树打印成多行

    剑指offer--面试题60:把二叉树打印成多行 Solution1: 20180911重做.经典题目.牢记做法! /* struct TreeNode {int val;struct TreeNod ...

  5. 剑指offer——面试题6:重建二叉树

    剑指offer--面试题6:重建二叉树 一个小知识点:已知二叉树的中序遍历和前序遍历(或后序遍历)结果则可以确定该二叉树:但是通过二叉树的前序遍历和后序遍历结果无法确定该二叉树!!! Solution ...

  6. C++版-剑指offer 面试题6:重建二叉树(Leetcode105. Construct Binary Tree from Preorder and Inorder Traversal) 解题报告

    剑指offer 重建二叉树 提交网址:  http://www.nowcoder.com/practice/8a19cbe657394eeaac2f6ea9b0f6fcf6?tpId=13&t ...

  7. 剑指offer——面试题7:重建二叉树

    1 // 面试题7:重建二叉树 2 // 题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输 3 // 入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1, ...

  8. 剑指Offer - 面试题59 - II. 队列的最大值(deque模拟单调栈)

    1. 题目 请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value.push_back 和 pop_front 的时间复杂度都是O(1). 若队列为空,pop_f ...

  9. 剑指offer 面试题59 - II. 队列的最大值

    请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value.push_back 和 pop_front 的均摊时间复杂度都是O(1). 若队列为空,pop_front ...

最新文章

  1. Entity Framework Core 2.0 使用入门
  2. 第一章 java nio三大组件与使用姿势
  3. 剑指 Offer 10- I. 斐波那契数列 (从重叠子问题到备忘录到dp数组迭代解法)
  4. 将阿拉伯数字转换成中文大写的好算法
  5. 依赖反转原理,IoC容器和依赖注入:第1部分
  6. python灰度图生成g代码_Python打造一个在线G代码生成器
  7. ACL'22 | 基于强化学习的实体对齐
  8. 高等数学复习笔记(二)- 一元函数微分学的概念、计算以及几何应用
  9. 你能卖什么,决定了你的收入落在什么档次
  10. velocity定制模板文件
  11. 希捷2T硬盘ST2000M001分区读不到变为RAW修复记
  12. 土地利用分类数据类型和下载
  13. 手游渠道出现三大变量
  14. HP-UX Samba服务配置手册
  15. double scanf输入时用%lf而printf用%f或%lf原理
  16. 【洛谷 P6151 [集训队作业2019] 青春猪头少年不会梦到兔女郎学姐】【容斥原理+生成函数】
  17. 【C/C++】PDB文件:每个开发者都必须知道
  18. Knights of the Round Table
  19. 快递鸟物流查询接口调用
  20. 在windows中批量修改文件名

热门文章

  1. 一道数学题引发的思考
  2. 屏蔽×××S 2008报表导出格式
  3. 1356. 根据数字二进制下 1 的数目排序
  4. 7-2 错误处理概念
  5. springboot日志可视化_Springboot面试问题集锦
  6. 我用Python爬取1000封情书助力室友表白班花,却反转再反转...原来这就是班花的终极秘密!
  7. 计算机成原理第2版,清华大学出版社-图书详情-《计算机组成原理(第2版)》...
  8. httpget请求设置长度_Citrix ADCHTTP请求Smuggling详解
  9. 3P新产品开发管理实务
  10. laravel 数据填充