Python DFS实现中max函数如何计算二叉树的高度?
解释
max(dfs(root.left), dfs(root.right)) + 1计算树高度的逻辑 这行代码是深度优先搜索(DFS)递归计算树高度的核心,我们拆解每一部分的作用:
递归终止基础
嵌套的dfs函数里,if not root: return 0是递归终止条件:空节点没有高度,直接返回0,这是整个递归的基础。递归计算子树高度
dfs(root.left):递归遍历当前节点的左子树,最终返回左子树的「节点数高度」——也就是从左子树根到最深叶子节点的路径上包含的节点总数。dfs(root.right):同理,返回右子树的「节点数高度」。
取最长子树路径
max(dfs(root.left), dfs(root.right))会从左右子树的高度中挑选出较大的值,这一步是为了找到当前节点往下延伸的最长路径——树的高度由整棵树里最长的那条路径决定。加上当前节点
+1是把当前节点本身计入高度,因为当前节点是这条最长路径的起点,所以要在子树最长路径的节点数基础上加1,得到以当前节点为根的整个子树的节点数高度。
实际示例:
假设当前节点的左子树是一个3节点的链式结构(根→左孩子→左孙子),dfs(root.left)会返回3;右子树只有1个节点,dfs(root.right)返回1。max(3,1)取3,加1后得到4,这就是当前节点为根的子树的节点数高度(如果要转换成常用的边数高度,就减1得到3)。
内容的提问来源于stack exchange,提问作者0004
相关产品推荐
相关产品推荐

