classTreeNode: def__init__(self, x): self.val = x self.left = None self.right = None defcreate_tree(list_tree): ifnot list_tree: return [] new_queue= Queue() root = TreeNode(list_tree[0]) new_queue.put(root) # 先入队一个结点 count = 1 whilenot new_queue.empty() and count<len(list_tree): dequeue = new_queue.get() # 出队 ifnot dequeue.left andnot dequeue.right: if count<len(list_tree) and list_tree[count]: dequeue.left=TreeNode(list_tree[count]) count= count+1 if count<len(list_tree) and list_tree[count]: dequeue.right=TreeNode(list_tree[count]) count= count+1
if dequeue.left: new_queue.put(dequeue.left) if dequeue.right: new_queue.put(dequeue.right) return root
方法一:递归法
1 2 3 4 5 6 7 8 9 10 11
classSolution: defmaxDepth(self, root: TreeNode) -> int: if root isNone: return0 left=1+self.maxDepth(root.left) right=1+self.maxDepth(root.right) if left<right: return right else: return left
1 2 3 4 5
root = [1,2,3,4,None,None,5] root_tree=create_tree(root) a=Solution() result =a.maxDepth(root_tree) result
from collections import deque classSolution: defmaxDepth(self, root: TreeNode): if root isNone: return0 new_deque=deque() new_deque.append(root) count=0 while len(new_deque): size=len(new_deque) while size>0: cur=new_deque.popleft() if cur.left: new_deque.append(cur.left) if cur.right: new_deque.append(cur.right) size=size-1 count=count+1 return count root = [1,2,3,4,None,None,5] root_tree=create_tree(root) a=Solution() result =a.maxDepth(root_tree) result