LeetCode:Same Tree - 判断两颗树是否相等

1、题目名称

Same Tree(判断两棵树是否相等)

2、题目地址

https://leetcode.com/problems/same-tree/

3、题目内容

英文:Given two binary trees, write a function to check if they are equal or not. Two binary trees are considered equal if they are structurally identical and the nodes have the same value.

中文:给定两颗二叉树,写一个函数判断这两棵树是否相等。如果两棵树的结构和各节点中保存的值是相等的,则认为这两棵树相等。

4、解题方法

本题可以采用先根遍历的方法,从上到下递归考察各节点。在任意一对节点的比较重,如果左右枝是否为空的属性和节点中的val值不相等,则认为两棵树不是同一棵树,否则继续考察。如果遍历结束后仍然不能证明这两棵树不是同一棵树,则这两棵树就是相等的

解决问题的Java代码如下:

/**
 * 功能说明:LeetCode 100 - Same Tree
 * 开发人员:Tsybius2014
 * 开发时间:2015年8月12日
 */
public class Solution {
    
    /**
     * 判断两个树是否为相等
     * @param p 树p
     * @param q 树q
     * @return
     */
    public boolean isSameTree(TreeNode p, TreeNode q) {
        if (p == null && q == null) {
            return true;
        } else if (
            (p == null && q != null) || 
            (p != null && q == null) || 
            p.val != q.val || 
            !isSameTree(p.left, q.left) || 
            !isSameTree(p.right, q.right)) {
            return false;
        } else {
            return true;
        }
    }
}

END

时间: 2024-10-24 13:48:06

LeetCode:Same Tree - 判断两颗树是否相等的相关文章

Leetcode:Symmetric Tree 判断对称树

Symmetric Tree Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center). For example, this binary tree is symmetric: 1 / 2 2 / \ / 3 4 4 3 But the following is not: 1 / 2 2 \ 3 3 解题分析: 二叉树递归,始终是第一颗二叉树的左子树和第二颗二叉树的右

判断两个树是否互相镜像

// 3. 判断两个树是否互相镜像 public static boolean isMirrorRec(TreeNode r1, TreeNode r2){ // 如果两个树都是空树,则返回true if(r1==null && r2==null){ return true; } // 如果有一棵树是空树,另一颗不是,则返回false if(r1==null || r2==null){ return false; } // 如果两个树都非空树,则先比较根节点 if(r1.val != r2

【LeetCode-面试算法经典-Java实现】【100-Same Tree(两棵树是否相同)】

[100-Same Tree(两棵树是否相同)] [LeetCode-面试算法经典-Java实现][所有题目目录索引] 原题 Given two binary trees, write a function to check if they are equal or not. Two binary trees are considered equal if they are structurally identical and the nodes have the same value. 题目大

LeetCode——Same Tree(判断两棵树是否相同)

问题: Given two binary trees, write a function to check if they are equal or not. Two binary trees are considered equal if they are structurally identical and the nodes have the same value.   分析: 考虑使用深度优先遍历的方法,同时遍历两棵树,遇到不等的就返回. 代码如下: /** * Definition f

【LeetCode】Symmetric Tree 判断一棵树是否是镜像的

题目:Symmetric Tree <span style="font-size:18px;">/**LeetCode Symmetric Tree 对称的树 * 思路:判断一棵树是否对称,1.有左子树就要有右子树 * 2.除根节点外对称节点值要相同 * 注意:对称后就是左子树的左节点和右子树的右节点比较 * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; *

判断两颗棵二叉树是否相等

int CompTree(TreeNode *tree1, TreeNode *tree2) { bool isTree1Null = (tree1 == NULL); bool isTree2Null = (tree2 == NULL); //其中一个为NULL,而另一个不为NULL,肯定不相等 if (isTree1Null != isTree2Null) return 1; //两个都为NULL,一定相等 if (isTree1Null && isTree2Null) return

LeetCode 100. Same Tree 判断两棵二叉树是否相等

Given two binary trees, write a function to check if they are the same or not. Two binary trees are considered the same if they are structurally identical and the nodes have the same value. Example 1: Input: 1 1 / \ / 2 3 2 3 [1,2,3], [1,2,3] Output:

判断一颗树是否为平衡二叉树

struct BinaryTreeNode { int m_Value; BinaryTreeNode* m_pLeft; BinaryTreeNode* m_pRight; }; int height(BinaryTreeNode*node ,bool&balance) { if(node==NULL) { return 0;} int R=node->right?height(node->right,balance)+1:0; if(!balance) return 0; int

C++ 判断一颗树腾讯分是分网站开发否是BST(二叉排序树)

因为腾讯分分网站开发haozbbs.com Q1446595067二叉排序树的中序遍历结果是递增的,所以可以通过中序遍历存储结果,再判断是否为递增的数组.1) 对树进行中序遍历,将结果保存在b[]数组中.2) 检测b[]数组中元素是否为升序排列.如果是,则这棵树为BST.时间复杂度: O(n) 代码如下: #include<iostream> #include<algorithm> using namespace std; typedef struct BinaryTreeNode