zoukankan      html  css  js  c++  java
  • 剑指offer28.对称的二叉树

     

     解题思路:首先,将原二叉树进行镜像处理。得到一个镜像二叉树:(镜像二叉树的求解见https://www.cnblogs.com/sbb-first-blog/p/13289799.html)。

         其次,对镜像后的二叉树进行比较,如果二者相同则返回true,否则返回false。

    终止条件:1、如果镜像和原二叉树有且只有一个为null则判定为false。

            2、如果镜像和元二叉树节点数不一致,则返回false.

     1 /**
     2  * Definition for a binary tree node.
     3  * struct TreeNode {
     4  *     int val;
     5  *     struct TreeNode *left;
     6  *     struct TreeNode *right;
     7  * };
     8  */
     9  /*递归得到二叉树的镜像
    10  并将得到的镜像与原二叉树进行比较*/
    11  //二叉树结点对比
    12 bool isEqual(struct TreeNode* first, struct TreeNode* sc){
    13         if(first==0 && sc==0) return true;
    14         if(first==0 || sc==0) return false;
    15         if(first->val!=sc->val) return false;
    16         return isEqual(first->right, sc->right) && isEqual(first->left,sc->left);
    17     }
    18 //二叉树镜像
    19 struct TreeNode* mirrotree(struct TreeNode* root)
    20 {
    21     if(root==0) return NULL;
    22     struct TreeNode* Node=(struct TreeNode*)malloc(sizeof(struct TreeNode));
    23     Node->val=root->val;
    24     Node->right=mirrotree(root->left);
    25     Node->left=mirrotree(root->right);
    26     return Node;
    27 }
    28 bool isSymmetric(struct TreeNode* root){
    29 //    struct TreeNode* Node1=TreeClone(root);
    30 //    struct TreeNode* Node2=mirrotree(Node1);
    31     struct TreeNode* Node2=mirrotree(root);
    32     return isEqual(root,Node2);
    33 }
  • 相关阅读:
    Struts学习之手动验证
    Struts学习之文件上传
    Struts学习之模型驱动
    Struts学习之类型转换
    Struts学习之自定义拦截器
    Java基础之"=="和 和 equals 方法的区别
    Hadoop学习之Hadoop案例分析
    Hadoop学习之Hadoop集群搭建
    Hadoop学习之自定义二次排序
    Hadoop学习之Mapreduce执行过程详解
  • 原文地址:https://www.cnblogs.com/sbb-first-blog/p/13289799.html
Copyright © 2011-2022 走看看