Given a binary tree, find its maximum depth.
The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.
Note: A leaf is a node with no children.
Example:
Given binary tree [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
return its depth = 3.
Answer
v1.stack
將 tree 一層一層的輸進 stack 中,有幾層就會有幾個 while (第一個 while),每一層的點會依照 .left / .right 的方式輸入進 stack 中(第二個 while )
v2. recursive (92.50%)
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def maxDepth(self, root):
if not root:
return 0
tmpstack = [root]
# for count depth
num = 0
while tmpstack:
nextL = []
while tmpstack:
top = tmpstack.pop()
if top.left:
nextL.append(top.left)
if top.right:
nextL.append(top.right)
tmpstack = nextL
num += 1
return num
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def maxDepth(self, root):
if not root:
return 0
return max(self.maxDepth(root.left), self.maxDepth(root.right)) + 1