题目要求:
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
思路:
由于要把左右节点的信息返回到根节点,所以采用后序遍历,即左右中。
即把叶子结点的高度返回父节点,父节点知道了叶子结点的高度后+1就是自己的高度,再返回到根节点这样一步步进行。
递归的终止条件是遇到了空节点,就返回0,代表空节点的高度是0。
代码:
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def maxDepth(self, root: Optional[TreeNode]) -> int:
def get_height(node):
if node == None:
return 0
left_height = get_height(node.left)
right_height = get_height(node.right)
return 1+max(left_height, right_height)
return get_height(root)