leetcode-100-Same-Tree

1.题目

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

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

示例 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

2.解

注意两个结点的不同情况,用if elif 划分

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None

class Solution(object):
def isSameTree(self, p, q):
"""
:type p: TreeNode
:type q: TreeNode
:rtype: bool
"""
# 两个结点的三种情况

# 两个都不是空
if q and p:
return p.val == q.val and self.isSameTree(p.left,q.left) and self.isSameTree(p.right,q.right)

# 两个都是空
elif not q and not p:
return True

# 一个空另一个非空
else:
return False