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
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
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)