Leetcode100.相同的树

本专栏内容为:leetcode刷题专栏,记录了leetcode热门题目以及重难点题目的详细记录

博主csdn个人主页:小小unicorn
⏩专栏分类:Leetcode
代码仓库:小小unicorn的代码仓库
关注我带你学习编程知识

相同的树

  • 题目描述
  • 解题思路:
  • 代码解决:
  • 结果与总结:

题目描述

题目来源:相同的树
给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。
如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。

Leetcode100.相同的树_第1张图片
Leetcode100.相同的树_第2张图片
Leetcode100.相同的树_第3张图片

解题思路:

判断两棵二叉树是否相同,也可以将其分解为子问题:
 1.比较两棵树的根是否相同。
 2.比较两根的左子树是否相同。
 3.比较两根的右子树是否相同。

代码解决:

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
bool isSameTree(struct TreeNode* p, struct 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);
    
}

结果与总结:

通过所有示例,问题得到解决。

总结:本题题目简单,其主要解决方法采取递归的方式来解决,利用递归前要判定几种特殊情况。

你可能感兴趣的:(leetcode,数据结构,二叉树)