LeetCode--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
方法1:
 1 class Solution:
 2     def isSameTree(self, p, q):
 3         """
 4         :type p: TreeNode
 5         :type q: TreeNode
 6         :rtype: bool
 7         """
 8         if not p or not q:
 9             return p == q
10         left = self.isSameTree(p.left,q.left)
11         right = self.isSameTree(p.right,q.right)
12         return p.val == q.val and left and right  

前序遍历:

 1 class Solution:
 2     def isSameTree(self, p, q):
 3         """
 4         :type p: TreeNode
 5         :type q: TreeNode
 6         :rtype: bool
 7         """
 8         if p==None and q==None:
 9             return True
10         if p==None:
11             return False
12         if q==None:
13             return False
14         
15         self.ans = True
16         self.preorder(p,q)
17         
18         return self.ans
19     
20     def preorder(self, p, q):
21         if p and q:
22             if p.val != q.val:
23                 self.ans = False
24                 return
25             self.preorder(p.left, q.left)
26             self.preorder(p.right, q.right)
27         elif q or q:
28             self.ans = False
29             return

 

2018-09-02 16:30:45
posted @ 2018-09-02 16:31  Assange  阅读(147)  评论(0编辑  收藏  举报