判断一颗二叉树是否对称
版权声明:本文为博主原创文章,未经博主允许不得转载。 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.空树 2.根节点 + 左子树 + 右子树(这里的左子树和右子树又是一颗二叉树) 可以看出二叉树就是递归定义的,下面的算法题 ...
- 算法:如何判断两颗二叉树是否相等
1.两可二叉树相等是指这两颗二叉树有着相同的结构,并且在相同位置上的结点有相同的值. 2.分析解答:两颗二叉树相等,节点的值相等,左右子树也完全相等,可以使用递归方法实现 3.代码如下: class ...
- 判断一颗二叉树是否是二叉排序树
题目:编写一个算法判断给定的二叉树是否是二叉排序树 分析: 二叉排序树的中序序列是升序序列,我们可以根据这一特性来进行判定 typedef struct node {int data; ...
- 判断一颗二叉树是否为搜索二叉树和完全二叉树
搜索二叉树:二叉树的中序遍历,在遍历的过程中,节点值都是递增的 class Node(object):def __init__(self,value):self.value = valueself.r ...
- 判断一颗二叉树是否是平衡二叉树
def getdepth(node):"""获取节点为根的深度"""if node == None:return 0ld = getdept ...
- 有苦有乐的算法 --- 判断一颗二叉树是否是完全二叉树、是否是平衡二叉树、是否是搜索二叉树
是否是完全二叉树 完全二叉树:二叉树的每一层要么是满的,要么从左到右处在变满的路上. public static boolean isCBT(Node head) {if (head == null) ...
- 判断一颗二叉树是否为二叉搜索树(Validate Binary Search Tree)
一.学习要点: 利用二叉搜索树的中序遍历为递增数组的性质: 二.代码: void middle(node* root,vector<int>& inorder) {if(root= ...
- 怎么判断两颗二叉树相等
bool pd(st *p, st *q) { if(p==NULL && q==NULL) return true; else if(p==NULL || q==NU ...
- 如何判断一颗二叉树为完全二叉树
基本思想: (1)若跟节点非空,则入队. (2)让p指向队列的对头,若p为NULL,则遍历队列的所有元素,如果出现非空值则返回false,否则返回true (3)若P非空,则将p的左右孩子入队,然后将 ...
最新文章
- 资源 | 8张思维导图帮你梳理深度学习机器学习多个知识点
- 安装rpm的mysql_linux下安装rpm格式的mysql
- 推荐开发工具系列之--FireGestures(火狐手势命令)
- 网络编程学习笔记(uname函数)
- python3.x获取windows自启动程序列表
- BAT资深算法工程师《深度学习》读书分享:概率和信息论
- Robot Framework(十七) 扩展RobotFramework框架——扩展Robot Framework Jar
- LoadRunner培训初级教程
- 在Github上搭建你的博客
- 设计模式之GOF23外观模式
- 电视盒子 android tv6,【亲测】S905L/S905L-B安卓TV6.0通刷固件
- Intel(R) Matrix Storage Manager 介绍
- 连接方法:网线水晶头接法
- java编程第七周作业
- GYM MaratonIME plays Chess 模拟
- linux 添加开机启动项的三种方法。
- 基于远程服务器的共享文件实现
- 如何快速把旧电脑数据转移到新电脑?
- STM32cubeMX:双通道ADC(DMA)
- 卡塔兰数(Catalan Number)--动态规划(Dynamic Programming)
热门文章
- java if经典程序_java经典程序题15道(另附自己做的答案)
- 天下武功,无坚不破,唯快不破
- Semantic UI学习(一、开始使用)
- 政府行政管理思维与互联网思维
- 为什么女程序员那么少,我觉得程序员应该是最适合女性的职位
- windows版微信Hook开发SDK之C#版-微信二次开发
- UNIX环境高级编程(APUE)读书笔记
- win10 提升administrator权限 管理员权限
- lan的以太网标准_并非所有以太网电缆都是平等的:通过升级,您可以获得更快的LAN速度...
- 图像处理半色调技术(matlab/C++)