面试题59:对称的二叉树
来源:互联网 发布:怎么举报淘宝刷假单 编辑:程序博客网 时间:2024/05/19 01:06
题目:请实现一个函数,用来判断一颗二叉树是不是对称的。如果一颗二叉树和它的镜像一样,那么就是对称的。
思路:通常前序遍历的时候遍历根节点然后遍历左子树在遍历右子树,定义另一种遍历算法,遍历完根节点之后先遍历右子树,在遍历左子树,判断遍历的结果是否一样,如果一样就是对称的。
8
6 6
5 7 7 5
前序遍历:8 6 5 7 6 7 5
新的遍历算法遍历之后为:8 6 5 7 6 7 5
所以是对称的
8
6 9
5 7 7 5
前序遍历:8 6 5 7 9 7 5
新的遍历算法遍历之后为:8 9 7 5 6 7 5
两次遍历结果不一样,所以不是对称的
7
7 7
7 7 7
前序遍历:7 7 7 7 7 7 ,考虑null时为 7 7 7 NULL NULL 7 NULL NULL 7 7 NULL NULL NULL
新的遍历算法遍历之后为:7 7 7 7 7 7 ,为了区分,将NULL也加上,7 7 NULL 7 NULL NULL 7 7 NULL NULL 7 NULL NULL
遍历结果也不一致,所以不对称
struct BTNode { int value; BTNode* left; BTNode* right; };bool isSymmetrical(BTNode * node1,BTNode * node2){if(node1==NULL&&node2==NULL)return true;//如果有一个为空if(node1==NULL||node2!=NULL)return false;//如果两个结点值不一致返回falseif(node1->value!=node2->value)return false;//node1遍历左子树与node2遍历右子树相比,然后node1遍历右子树与node2遍历左子树相比return isSymmetrical(node1->left,node2->right)&&isSymmetrical(node1->right,node2->left);}bool isSymmetrical(BTNode * root){return isSymmetrical(root,root);}
0 0
- 面试题59:对称的二叉树
- 面试题59:对称的二叉树
- 面试题59-对称的二叉树
- 面试题59:对称的二叉树
- 面试题59:对称的二叉树
- 面试题66:对称的二叉树
- 【剑指Offer学习】【面试题59:对称的二叉树】
- 剑指offer-面试题59:对称的二叉树
- 剑指offer--面试题59:对称的二叉树
- (剑指Offer)面试题59:对称的二叉树
- 剑指offer-面试题59-对称的二叉树
- 剑指offer 面试题59 对称的二叉树
- (剑指Offer)面试题59:对称的二叉树
- 剑指offer面试题[59]-对称的二叉树
- 【剑指offer】面试题28:对称的二叉树
- 剑指offer--面试题28:对称的二叉树
- 剑指Offer面试题59:对称二叉树 Java实现
- 【剑指Offer】面试题59:对称二叉树
- 虚拟运营商醒醒吧!不要再“沉睡”
- Servlet中解决中文乱码的方法
- ppt使用技巧(动态更新)
- PHP关于VC11,VC9,VC6以及Thread Safe和Non Thread Safe版本选择的问题
- Java基础04——多线程<二>
- 面试题59:对称的二叉树
- libsqlite3.dylib与libsqlite3.0.dylib区别
- Ubuntu中安装Python
- jQuery插件的写法
- Serializable & Parcelable
- cocos2dx对所有子节点设置透明度
- Android中ActivityLifecycleCallbacks监听Activity们的生命周期
- Spark中配置Parquet参数
- QML事件处理--按键处理