解决最大二叉树深度时需要帮助理解Python语法来编写递归

时间:2018-12-25 22:23:25

标签: python

问题在于使用递归求解二叉树的最大深度。最初来自leetcode https://leetcode.com/problems/maximum-depth-of-binary-tree/solution/

我试图通过一个真实的例子来理解代码。 root = 3,左子= 9,右子= null。应该返回2。

具体来说,我不太了解left_height如何将int值设为1。我知道right_height为None,因此为0。

有人可以真正地讲解示例,真是太好了。我很了解算法。我对处理python对象不是很熟悉。

# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
    def maxDepth(self, root):
        """
        :type root: TreeNode
        :rtype: int
        """ 
        if root is None: 
            return 0 
        else: 
            left_height = self.maxDepth(root.left) 
            right_height = self.maxDepth(root.right) 
            return max(left_height, right_height) + 1  

2 个答案:

答案 0 :(得分:0)

左节点没有左或右,因此它将返回max(0,0)+1或1

此调用将树返回到根,以返回max(1,0)+1,最终结果为2

答案 1 :(得分:0)

我点击了链接,因此这些数字无关紧要

    3
   / \
  9  20
    /  \
   15   7

相同
    .
   / \
  .  .
    / \
   .   .