欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

给定两个二叉树,判断它们是否相同

程序员文章站 2022-05-16 10:09:43
...

题目网址:https://leetcode-cn.com/problems/same-tree/

思路如下
1.如果两棵树都是空树,直接返回true
2.一棵树为空一棵树不为空,返回false
3.如果都不为空树
a)比较根节点的值是否相同,如果不相同返回false
b)递归比较左子树和比较右子树是否相同

大事化小
判定两棵树是否相同=> 比较根节点是否相同+比较左子树右子树是否相同

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public boolean isSameTree(TreeNode p, TreeNode q) {
        if(p == null && q == null){
            return true;
        }
        if(p == null || q == null){
            return false;
        }
        if(p.val != q.val){
            return false;
        }
        return isSameTree(p.left,q.left) && isSameTree(p.right,q.right);
    }
}

这里的三个逼近条件需要着重思考一下
比较两棵树是否相等
1.如果都为空,返回true,在梦境最后一层也将待着任务true返回

2.如果一个为空,一个不为空
即一个有子树一个没有子树,带着任务F返回上一层梦境

3.判断完上面两个条件后,判断第三个,即访问,判断两个值是否相等,相等的话递归遍历左子树,递归遍历右子树