File tree Expand file tree Collapse file tree 2 files changed +95
-0
lines changed Expand file tree Collapse file tree 2 files changed +95
-0
lines changed Original file line number Diff line number Diff line change
1
+ // 第一种思路 使用层次遍历依次比较各个节点
2
+ // 4ms 32.81%
3
+
4
+ /* *
5
+ * Definition for a binary tree node.
6
+ * struct TreeNode {
7
+ * int val;
8
+ * TreeNode *left;
9
+ * TreeNode *right;
10
+ * TreeNode(int x) : val(x), left(NULL), right(NULL) {}
11
+ * };
12
+ */
13
+
14
+ #include < queue>
15
+
16
+ class Solution {
17
+ public:
18
+ bool isSameTree (TreeNode* p, TreeNode* q) {
19
+ queue<TreeNode*> queue1;
20
+ queue<TreeNode*> queue2;
21
+
22
+ queue1.push (p);
23
+ queue2.push (q);
24
+
25
+ while (queue1.size () > 0 && queue2.size () > 0 )
26
+ {
27
+ TreeNode *itemP = queue1.front ();
28
+ TreeNode *itemQ = queue2.front ();
29
+
30
+ queue1.pop ();
31
+ queue2.pop ();
32
+
33
+ if (itemP == 0 || itemQ == 0 )
34
+ {
35
+ if (!(itemP == 0 && itemQ == 0 ))
36
+ return false ;
37
+ }
38
+ else if (!(itemP->val == itemQ->val ))
39
+ return false ;
40
+ else
41
+ {
42
+ queue1.push (itemP->left );
43
+ queue1.push (itemP->right );
44
+
45
+ queue2.push (itemQ->left );
46
+ queue2.push (itemQ->right );
47
+ }
48
+ }
49
+
50
+ // 当循环退出的时候,只有两个队列都为空的时候两棵树才是完全相等的
51
+ if (queue1.size () == 0 && queue2.size () == 0 )
52
+ return true ;
53
+ else
54
+ return false ;
55
+ }
56
+ };
Original file line number Diff line number Diff line change
1
+ # 第一种思路 使用层次遍历依次比较各个节点
2
+ # 52ms 34.66%
3
+
4
+ # Definition for a binary tree node.
5
+ # class TreeNode:
6
+ # def __init__(self, x):
7
+ # self.val = x
8
+ # self.left = None
9
+ # self.right = None
10
+
11
+ class Solution :
12
+ def isSameTree (self , p , q ):
13
+ """
14
+ :type p: TreeNode
15
+ :type q: TreeNode
16
+ :rtype: bool
17
+ """
18
+ queue1 = [p ]
19
+ queue2 = [q ]
20
+
21
+ while queue1 and queue2 :
22
+
23
+ itemP = queue1 .pop (0 )
24
+ itemQ = queue2 .pop (0 )
25
+
26
+ if itemP is None or itemQ is None :
27
+ if not itemP is itemQ is None :
28
+ return False
29
+ elif not itemP .val == itemQ .val :
30
+ return False
31
+ else :
32
+ queue1 .append (itemP .left )
33
+ queue1 .append (itemP .right )
34
+
35
+ queue2 .append (itemQ .left )
36
+ queue2 .append (itemQ .right )
37
+
38
+ # 当循环退出的时候,只有两个队列都为空的时候两棵树才是完全相等的
39
+ return True if not queue1 and not queue2 else False
You can’t perform that action at this time.
0 commit comments