版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012311410/article/details/71108475
1.题目描述

请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的.

二叉树结构:

struct TreeNode {
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
    TreeNode(int x) :
            val(x), left(NULL), right(NULL) {
    }
};

2.基本思路

判断一颗二叉树是不是对称的,等价于判断其左右子树是不是镜像对称的
    判断镜对称像即判断对称的位置上的元素是不是相等
    两个节点A和B对称等价于:
        这两个节点上存储的值相等
        节点A的左子树节点和节点B的右子树上的节点是对称的
        节点A的右子树节点和节点A的左子树上的节点是对称的

3.代码

public:
    bool isTreeSymmertic(TreeNode *pHead1,TreeNode *pHead2){

if(pHead1==NULL && pHead2==NULL)
           return true;             
       if(pHead1==NULL)
           return false;
       if(pHead2==NULL)
           return false;

return (pHead1->val==pHead2->val) && isTreeSymmertic(pHead1->left,pHead2->right) && isTreeSymmertic(pHead1->right,pHead2->left);
    }

bool isSymmetrical(TreeNode* pRoot)
    {
        if(pRoot==NULL)
            return true;
        bool res=isTreeSymmertic(pRoot->left,pRoot->right);
        return res;
    }
---------------------  
作者:douniwanli  
来源:CSDN  
原文:https://blog.csdn.net/u012311410/article/details/71108475  
版权声明:本文为博主原创文章,转载请附上博文链接!

判断一颗二叉树是否对称相关推荐

  1. 二叉树常见算法题(单值二叉树、二叉树的最大深度、反转二叉树、判断两颗二叉树是否相同、对称二叉树、一颗二叉树是否是另一颗二叉树的子树)

    这里的代码都是递归实现的,再强调下二叉树的概念,二叉树的构成有两种情况: 1.空树 2.根节点 + 左子树 + 右子树(这里的左子树和右子树又是一颗二叉树) 可以看出二叉树就是递归定义的,下面的算法题 ...

  2. 算法:如何判断两颗二叉树是否相等

    1.两可二叉树相等是指这两颗二叉树有着相同的结构,并且在相同位置上的结点有相同的值. 2.分析解答:两颗二叉树相等,节点的值相等,左右子树也完全相等,可以使用递归方法实现 3.代码如下: class ...

  3. 判断一颗二叉树是否是二叉排序树

    题目:编写一个算法判断给定的二叉树是否是二叉排序树 分析:         二叉排序树的中序序列是升序序列,我们可以根据这一特性来进行判定 typedef struct node {int data; ...

  4. 判断一颗二叉树是否为搜索二叉树和完全二叉树

    搜索二叉树:二叉树的中序遍历,在遍历的过程中,节点值都是递增的 class Node(object):def __init__(self,value):self.value = valueself.r ...

  5. 判断一颗二叉树是否是平衡二叉树

    def getdepth(node):"""获取节点为根的深度"""if node == None:return 0ld = getdept ...

  6. 有苦有乐的算法 --- 判断一颗二叉树是否是完全二叉树、是否是平衡二叉树、是否是搜索二叉树

    是否是完全二叉树 完全二叉树:二叉树的每一层要么是满的,要么从左到右处在变满的路上. public static boolean isCBT(Node head) {if (head == null) ...

  7. 判断一颗二叉树是否为二叉搜索树(Validate Binary Search Tree)

    一.学习要点: 利用二叉搜索树的中序遍历为递增数组的性质: 二.代码: void middle(node* root,vector<int>& inorder) {if(root= ...

  8. 怎么判断两颗二叉树相等

    bool pd(st *p, st *q) {     if(p==NULL && q==NULL) return true;     else if(p==NULL || q==NU ...

  9. 如何判断一颗二叉树为完全二叉树

    基本思想: (1)若跟节点非空,则入队. (2)让p指向队列的对头,若p为NULL,则遍历队列的所有元素,如果出现非空值则返回false,否则返回true (3)若P非空,则将p的左右孩子入队,然后将 ...

最新文章

  1. 资源 | 8张思维导图帮你梳理深度学习机器学习多个知识点
  2. 安装rpm的mysql_linux下安装rpm格式的mysql
  3. 推荐开发工具系列之--FireGestures(火狐手势命令)
  4. 网络编程学习笔记(uname函数)
  5. python3.x获取windows自启动程序列表
  6. BAT资深算法工程师《深度学习》读书分享:概率和信息论
  7. Robot Framework(十七) 扩展RobotFramework框架——扩展Robot Framework Jar
  8. LoadRunner培训初级教程
  9. 在Github上搭建你的博客
  10. 设计模式之GOF23外观模式
  11. 电视盒子 android tv6,【亲测】S905L/S905L-B安卓TV6.0通刷固件
  12. Intel(R) Matrix Storage Manager 介绍
  13. 连接方法:网线水晶头接法
  14. java编程第七周作业
  15. GYM MaratonIME plays Chess 模拟
  16. linux 添加开机启动项的三种方法。
  17. 基于远程服务器的共享文件实现
  18. 如何快速把旧电脑数据转移到新电脑?
  19. STM32cubeMX:双通道ADC(DMA)
  20. 卡塔兰数(Catalan Number)--动态规划(Dynamic Programming)

热门文章

  1. java if经典程序_java经典程序题15道(另附自己做的答案)
  2. 天下武功,无坚不破,唯快不破
  3. Semantic UI学习(一、开始使用)
  4. 政府行政管理思维与互联网思维
  5. 为什么女程序员那么少,我觉得程序员应该是最适合女性的职位
  6. windows版微信Hook开发SDK之C#版-微信二次开发
  7. UNIX环境高级编程(APUE)读书笔记
  8. win10 提升administrator权限 管理员权限
  9. lan的以太网标准_并非所有以太网电缆都是平等的:通过升级,您可以获得更快的LAN速度...
  10. 图像处理半色调技术(matlab/C++)