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 }
  • 相关阅读:
    jmeter参数化
    安卓稳定性压测工具_monkey环境搭建(简易)
    安卓开发环境搭建
    linux环境下禅道搭建
    Elasticsearch 开源版、基础版、黄金版、铂金版功能差异
    防火墙与127.0.0.1
    基于x-pack的ES用户管理(认证)
    elasticsearch-keystore 命令简单解释
    Elasticsearch核心技术与实战-学习笔记
    程序设计随想
  • 原文地址:https://www.cnblogs.com/sbb-first-blog/p/13289799.html
Copyright © 2011-2022 走看看