leetcode469:等价二叉树

1、

  检查两棵二叉树是否等价。等价的意思是说,首先两棵二叉树必须拥有相同的结构,并且每个对应位置上的节点上的数都相等。

 1             1
   / \           /   2   2   and   2   2
 /             /
4             4

就是两棵等价的二叉树。

    1             1
   / \           /   2   3   and   2   3
 /               4                 4

就不是等价的。

2、思路:

  1、首先,判断跟,为空就返回true

  2、其次,当不想等时。一方为空,一方不为空。或者两方的值不相等

  3、再次递归本方法:先左后右

代码:递归

  

class TreeNode {
         public int val;
         public TreeNode left, right;
         public TreeNode(int val) {
             this.val = val;
             this.left = this.right = null;
         }
     }
public boolean isIdentical(TreeNode a, TreeNode b) {
         if(a == null && b == null){
             return true;
         }
         if(a == null && b != null || a!= null && b == null || a.val != b.val ){
             return false;
         }

         return isIdentical(a.left, b.left) && isIdentical(a.right, b.right);
     }
				
时间: 2024-08-07 00:15:58

leetcode469:等价二叉树的相关文章

lintcode:等价二叉树

等价二叉树 检查两棵二叉树是否等价.等价的意思是说,首先两棵二叉树必须拥有相同的结构,并且每个对应位置上的节点上的数都相等. 样例 1 1 / \ / 2 2 and 2 2 / / 4 4 就是两棵等价的二叉树. 1 1 / \ / 2 3 and 2 3 / 4 4 就不是等价的. 解题 树的结构相同,结点值相等 直接递归 /** * Definition of TreeNode: * public class TreeNode { * public int val; * public Tr

LeetCode951-翻转等价二叉树

问题:翻转等价二叉树 我们可以为二叉树 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,

等价二叉树

检查两棵二叉树是否等价.等价的意思是说,首先两棵二叉树必须拥有相同的结构,并且每个对应位置上的节点上的数都相等. 样例 1 1 / \ / 2 2 and 2 2 / / 4 4 就是两棵等价的二叉树. 1 1 / \ / 2 3 and 2 3 / 4 4 就不是等价的. /** * Definition of TreeNode: * public class TreeNode { * public int val; * public TreeNode left, right; * publi

LintCode_469 等价二叉树

题目 检查两棵二叉树是否等价.等价的意思是说,首先两棵二叉树必须拥有相同的结构,并且每个对应位置上的节点上的数都相等. 样例 1 1 / \ / 2 2 and 2 2 / / 4 4 就是两棵等价的二叉树. 1 1 / \ / 2 3 and 2 3 / 4 4 就不是等价的. C++代码 bool isIdentical(TreeNode* a, TreeNode* b) { // Write your code here if(!a && !b) { return true; } i

Lintcode 469. 等价二叉树

----------------------------------------------- AC代码: /** * Definition of TreeNode: * public class TreeNode { * public int val; * public TreeNode left, right; * public TreeNode(int val) { * this.val = val; * this.left = this.right = null; * } * } */

普通树与二叉树

树 树作为一种常用的数据结构,不可不知.树采用的是链式存储,在详细介绍树之前要先了解几个基本概念: 根.节点.孩子.双亲.兄弟.分支 就不多BB了,叶子指的是没有子节点的节点,树的高度指从根到树所有叶子节点的最大长度,节点的度为其子节点的数量,节点的深度为节点到根的路径长度. 二叉树 二叉表示至多两向选择,在许多场景下都有应用.二叉树的种类实在太多,今天先宽泛地说一下几种二叉树. 严格二叉树 严格二叉树是这样的二叉树,它的每个节点或者没有孩子或者有两个孩子,即没有一个孩子的节点. 满二叉树 满二

搜索树

前面写过了向量和链表的结构,前者静态性能好而动态性能差,后者则相反.考虑改进树的结构,得到动态和静态性能都让人满意的数据结构,特别是在查找以及插入删除操作上具有优势. 查找或搜索(search):从一组数据对象中找出符合条件者的操作.把数据对象,定义为词条的形式(Entry),词条的形式为关键码-值,即为key-value形式,前者作为比较的依据,后者是实际存储的数据.词条必须定义key相关的比较操作,词条的排序就是key的排序.因此,查找的过程和结果,仅仅取决于目标对象的关键码,这种方式称作循

leetcode树专题894.897,919,951

满二叉树是一类二叉树,其中每个结点恰好有 0 或 2 个子结点. 返回包含 N 个结点的所有可能满二叉树的列表. 答案的每个元素都是一个可能树的根结点. 答案中每个树的每个结点都必须有 node.val=0. 你可以按任何顺序返回树的最终列表. 示例: 输入:7 输出:[[0,0,0,null,null,0,0,null,null,0,0],[0,0,0,null,null,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,null,null,null,null,0,0],

leet

# 题名1 两数之和    2 两数相加    3 无重复字符的最长子串    4 寻找两个有序数组的中位数    5 最长回文子串    6 Z 字形变换    7 整数反转    8 字符串转换整数 (atoi)    9 回文数    10 正则表达式匹配    11 盛最多水的容器    12 整数转罗马数字    13 罗马数字转整数    14 最长公共前缀    15 三数之和    16 最接近的三数之和    17 电话号码的字母组合    18 四数之和    19 删除链表