题目
- 给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点
递归解法
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def maxDepth(self, root: TreeNode) -> int:
if not root:
return 0
left_height = self.maxDepth(root.left)
right_height = self.maxDepth(root.right)
return max(left_height,right_height) + 1
还有一种递归的推导式写法
class Solution:
def maxDepth(self, root: TreeNode) -> int:
return 0 if not root else max(self.maxDepth(root.left),self.maxDepth(root.right)) + 1
迭代解法
class Solution:
def maxDepth(self, root: TreeNode) -> int:
stack = []
if not root:
stack.append(root)
depth = 0
while stack != []:
curr_depth,root = stack.pop()
depth = max(curr_depth,depth)
if not root:
stack.append((curr_depth+1,root.left))
stack.append((curr_depth+1,root.right))
return depth