LeetCode 100. 相同的树

100. 相同的树

难度简单

给定两个二叉树,编写一个函数来检验它们是否相同。

如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。

示例 1:

输入:       1         1
          / \       / \
         2   3     2   3

        [1,2,3],   [1,2,3]

输出: true

示例 2:

输入:      1          1
          /           \
         2             2

        [1,2],     [1,null,2]

输出: false

示例 3:

输入:       1         1
          / \       / \
         2   1     1   2

        [1,2,1],   [1,1,2]

输出: false
思路:由题意可知,两个树在结构上相同,所以无需考虑两棵树结构不同的情况,对于这棵树,我们可以遍历相同节点,如果数值相同,并且同时到达同一个空节点,则返回true,否则,返回false。
 1 /**
 2  * Definition for a binary tree node.
 3  * struct TreeNode {
 4  *     int val;
 5  *     struct TreeNode *left;
 6  *     struct TreeNode *right;
 7  * };
 8  */
 9 
10 
11 bool isSameTree(struct TreeNode* p, struct TreeNode* q){
12     if(p==NULL&&q==NULL)
13         return true;
14     if(p!=NULL&&q!=NULL){
15         if(p->val==q->val){
16             return isSameTree(p->left,q->left)&&isSameTree(p->right,q->right);
17         }else{
18             return false;
19         }
20     }else{
21         return false;
22     }
23 }

 

posted @ 2020-04-14 21:39  莴苣&  阅读(141)  评论(0编辑  收藏  举报