我们可以为二叉树 T 定义一个翻转操作,如下所示:选择任意节点,然后交换它的左子树和右子树。

只要经过一定次数的翻转操作后,能使 X 等于 Y,我们就称二叉树 X 翻转等价于二叉树 Y。

编写一个判断两个二叉树是否是翻转等价的函数。这些树由根节点 root1 和 root2 给出。

示例:

输入:root1 = [1,2,3,4,5,6,null,null,null,7,8], root2 = [1,3,2,null,6,4,5,null,null,null,null,8,7] 输出:true 解释:We flipped at nodes with values 1, 3, and 5.

提示:

  1. 每棵树最多有 100 个节点。
  2. 每棵树中的每个值都是唯一的、在 [0, 99] 范围内的整数。

递归求解,交换参数节点就相当于交换了。

class Solution {
public:
bool flipEquiv(TreeNode* root1, TreeNode* root2)
{
if(root1 == NULL && root2 == NULL)
return true;
else if(root1 == NULL && root2 != NULL || root1 != NULL && root2 == NULL)
return false;
else if(root1 ->val == root2 ->val)
{
return
(flipEquiv(root1 ->left, root2 ->left) && flipEquiv(root1 ->right, root2 ->right)) ||
(flipEquiv(root1 ->right, root2 ->left) && flipEquiv(root1 ->left, root2 ->right));
}
else
{
return false;
}
}
};

最新文章

  1. thinkphp vendor
  2. Redis学习笔记~分布式的Pub/Sub模式
  3. Visual Studio 2013启用AnkSVN
  4. XidianOJ 1120 Gold of Orz Pandas
  5. 使用radioGroup的时候,每个radioButton的状态选择器要使用 state_checked=""属性,不能使用selected
  6. nova分析(10)—— nova-rootwrap
  7. C#实现程序自重启
  8. C# 获取字符串中的数字
  9. jq事件绑定
  10. 西门子 PLC SFC14/15 80B1故障
  11. springboot秒杀课程学习整理1-3
  12. TCP/IP 详解
  13. 2018 ACM 网络选拔赛 沈阳赛区
  14. 安卓程序代写 网上程序代写[原]Android应用的自动更新模块
  15. 接口自动化(unittest)
  16. byte[]->new String(byte[]) -> getByte()引发的不一致问题
  17. php Call to undefined function imagettftext()问题解决
  18. PyCharm中的Console自动换行
  19. c++课的圆周面积
  20. 安全测试===CSRF攻击简介

热门文章

  1. VS 解决方案 Xamarin 配置
  2. vue中axios使用封装
  3. SDOI2018
  4. [Codeplus 4月赛]最短路
  5. [NOI 2018]冒泡排序
  6. 模板方法模式&策略模式区别联系
  7. Java基础拾遗(一) — 忽略的 Integer 类
  8. 01_MyBatis入门
  9. Django2.0+小程序技术打造微信小程序助手✍✍✍
  10. javaweb中静态文件的处理方法