solution.md 2.9 KB
Newer Older
每日一练社区's avatar
每日一练社区 已提交
1
# 相同的树
F
fix bug  
feilong 已提交
2

每日一练社区's avatar
每日一练社区 已提交
3
<p>给你两棵二叉树的根节点 <code>p</code> 和 <code>q</code> ,编写一个函数来检验这两棵树是否相同。</p><p>如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。</p><p> </p><p><strong>示例 1:</strong></p><img alt="" src="https://cdn.jsdelivr.net/gh/doocs/leetcode@main/solution/0100-0199/0100.Same%20Tree/images/ex1.jpg" style="width: 622px; height: 182px;" /><pre><strong>输入:</strong>p = [1,2,3], q = [1,2,3]<strong><br />输出:</strong>true</pre><p><strong>示例 2:</strong></p><img alt="" src="https://cdn.jsdelivr.net/gh/doocs/leetcode@main/solution/0100-0199/0100.Same%20Tree/images/ex2.jpg" style="width: 382px; height: 182px;" /><pre><strong>输入:</strong>p = [1,2], q = [1,null,2]<strong><br />输出:</strong>false</pre><p><strong>示例 3:</strong></p><img alt="" src="https://cdn.jsdelivr.net/gh/doocs/leetcode@main/solution/0100-0199/0100.Same%20Tree/images/ex3.jpg" style="width: 622px; height: 182px;" /><pre><strong>输入:</strong>p = [1,2,1], q = [1,1,2]<strong><br />输出:</strong>false</pre><p> </p><p><strong>提示:</strong></p><ul>	<li>两棵树上的节点数目都在范围 <code>[0, 100]</code> 内</li>	<li><code>-10<sup>4</sup> <= Node.val <= 10<sup>4</sup></code></li></ul>
每日一练社区's avatar
每日一练社区 已提交
4
<p>以下<span style="color:red">错误</span>的选项是?</p>
F
fix bug  
feilong 已提交
5

每日一练社区's avatar
每日一练社区 已提交
6
## aop
F
fix bug  
feilong 已提交
7

每日一练社区's avatar
每日一练社区 已提交
8
### before
F
fix bug  
feilong 已提交
9

每日一练社区's avatar
每日一练社区 已提交
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
```cpp
#include <bits/stdc++.h>
using namespace std;

struct TreeNode
{
    int val;
    TreeNode *left;
    TreeNode *right;
    TreeNode() : val(0), left(nullptr), right(nullptr) {}
    TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
    TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
};

```
每日一练社区's avatar
每日一练社区 已提交
25

每日一练社区's avatar
每日一练社区 已提交
26
### after
F
fix bug  
feilong 已提交
27

每日一练社区's avatar
每日一练社区 已提交
28 29 30 31 32
```cpp

```

## 答案
F
fix bug  
feilong 已提交
33

每日一练社区's avatar
每日一练社区 已提交
34 35 36 37 38
```cpp
都是错的
```
## 选项

F
fix bug  
feilong 已提交
39

每日一练社区's avatar
每日一练社区 已提交
40
### A
F
fix bug  
feilong 已提交
41

每日一练社区's avatar
每日一练社区 已提交
42 43 44 45 46 47 48 49 50 51 52 53 54 55
```cpp
class Solution
{
public:
    bool isSameTree(TreeNode *p, TreeNode *q)
    {
        if (p == nullptr)
            return q == nullptr;
        return q != nullptr && p->val == q->val && isSameTree(p->left, q->left) && isSameTree(p->right, q->right);
    }
};
```

### B
F
fix bug  
feilong 已提交
56

每日一练社区's avatar
每日一练社区 已提交
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
```cpp
class Solution
{
public:
    bool isSameTree(TreeNode *p, TreeNode *q)
    {
        TreeNode *temp, *temq;
        temp = p;
        temq = q;
        bool lb, rb;
        if (!p && !q)
            return true;
        if ((!p || !q) || p->val != q->val)
            return false;
        else
        {
            lb = isSameTree(p->left, q->left);
            rb = isSameTree(p->right, q->right);
        }
        if (lb && rb)
            return true;
        else
            return false;
    }
};
```

### C
F
fix bug  
feilong 已提交
85

每日一练社区's avatar
每日一练社区 已提交
86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
```cpp
class Solution
{
public:
    bool 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));
    }
};
```