给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
题干很简单,就是判断二叉树有几层,我们直接结合完整代码进行分析:
class Solution:
def maxdepth(self, root: treenode) -> int:
return self.getdepth(root)
def getdepth(self, node):
if not node:
return 0
leftheight = self.getdepth(node.left) #左
rightheight = self.getdepth(node.right) #右
height = 1 + max(leftheight, rightheight) #中
return height
进入自定义的getdepth函数,如果不存在节点就是0层。
leftheight = self.getdepth(node.left) #左
rightheight = self.getdepth(node.right) #右
你可以理解为,先从根节点往下分左右节点,在对左节点分左右节点,直到分到最底层,开始从最底层慢慢+1,不停的递归。比如:
根据leftheight = self.getdepth(node.left),可以一直到最左侧的节点3,3往下没有了为0,那3这一层的高度为1,3往上一层的节点为2,2还有一右节点,符合 rightheight = self.getdepth(node.right),开始对其进行递归,直到最底层,这样不停递归,height = 1 + max(leftheight, rightheight)选取子树中最长的一个加上根节点一层,得到整个树最长的一条路线。