Leetcode刷题记录-20181018

Tree操作

# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None

100.Same Tree    

递归,注意判断条件,①如果均为空树②如果都不为空树③如果一方为空树

 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 and not q:
 9             return True
10         if p and q:
11             if p.val != q.val:
12                 return False
13             else:
14                 return self.isSameTree(p.left,q.left) and self.isSameTree(p.right,q.right)
15         else:
16             return False
View Code

101.Symmetric Tree    

与Same Tree算法类似

 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 and not q:
 9             return True
10         if p and q:
11             if p.val != q.val:
12                 return False
13             else:
14                 return self.isSametree(p.right,q.left) and self.isSametree(p.left,q.right)
15         else:
16             return False
17          
18     def isSymmetric(self, root):
19         """
20         :type root: TreeNode
21         :rtype: bool
22         """
23         if not root: return True
24         p = root.left
25         q = root.right
26         if not p and not q: return True
27         if p and q:
28             if p.val == q.val:
29                 return self.isSametree(p.left,q.right) and self.isSametree(p.right,q.left)
30             else:
31                 return False
32         else:
33             return False
View Code

104.Maximum Depth of Binary Tree 

递归,第0层的最大深度等于max(第1层左孩子的最大深度+1,第一层右孩子的最大深度)

 1 class Solution:
 2     def maxDepth(self, root):
 3         """
 4         :type root: TreeNode
 5         :rtype: int
 6         """
 7         depth = 0
 8         if not root:
 9             return depth
10         else:
11             p = root.left
12             q = root.right
13             if not p and not q:
14                 return 1
15             else:
16                 return max(self.maxDepth(p)+1,self.maxDepth(q)+1)
View Code

 

posted @ 2018-10-18 16:48  adminyzz  阅读(106)  评论(0)    收藏  举报