def maxDepth(root):
"""
非递归,用栈表示,stack栈存储节点
"""
if not root:
return 0
count = 0
stack = [root] ####存放每一层的子节点
tmp = [] ###临时存放每一层的子节点,如果上一层都出栈,则stack = tmp
while stack:
while stack:
root = stack.pop(0)
if root.left:
tmp.append(root.left)
if root.right:
tmp.append(root.right)
count += 1
stack = tmp
tmp = []
return count
def minDepth(self, root):
"""
"""
if not root:
return 0
count = 0
stack = [root] ####存放每一层的子节点
tmp = []
while stack:
while stack:
root = stack.pop(0)
if root.left:
tmp.append(root.left)
if root.right:
tmp.append(root.right)
if not root.left and not root.right:
count += 1
return count
count += 1
stack = tmp
tmp = []
return count
def maxDepth(self, root):
'''
递归
'''
if not root:
return 0
else:
return max(self.maxDepth(root.left),self.maxDepth(root.right)) + 1
def minDepth(self, root):
'''
递归
'''
if not root:
return 0
elif root.left and root.right:
return min(self.minDepth(root.left),self.minDepth(root.right)) + 1
else:
return max(self.minDepth(root.left),self.minDepth(root.right)) + 1