我正在尝试在 python 中解决 Leetcode 104:https ://leetcode.com/problems/maximum-depth-of-binary-tree/代码注释建议输入类型为 TreeNode。测试用例:root = [3,9,20,null,null,15,7]我对输入的类型感到困惑。输入类型是列表还是“TreeNode”?TreeNode 甚至是一种类型吗?它与列表有何不同?我如何获得 len(root)?因为那里有空值,所以我无法使用 len(root)。当然,我可以将 null 转换为字符串“null”,但这感觉很糟糕。(我想用几何级数来解决这个问题。这就是为什么我需要长度)这是我写的代码。使用几何级数。S = (a1*(q**n) - a1)/(q-1) when q != 1. 结果是使用我的hacky方式将null变成字符串“null”并将root视为一个列表类型。## a_1 = 1, ## q = 2, ## s = len(root) = (a1*q - a1)/(q-1) = (1*(2**n) - 1)/(2-1) ## --> len(root) = (2**n)-1 --> solve n import numpy as npdef f(root): s = len(root) n = (np.log(s+1))/(np.log(2)) return nprint f([3,9,20,"null","null",15,7])
2 回答
至尊宝的传说
TA贡献1789条经验 获得超10个赞
如果您激活Python答案的代码类型,您将收到以下评论:
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
[3,9,20,null,null,15,7]只是那棵树的线性描述,3第一个节点在哪里,有叶子9和20,然后9有叶子null和再次null(所以,没有叶子),20有叶子15和7。但是,如果他们希望您将线性树描述解析为表单,那么给您定义TreeNode并让您使用参数是没有意义root的TreeNode。
所以,你的任务是,前往下你root.left和root.right递归和记录的最大深度。
PS:如果您选择不同的编程语言,问题不会改变,所以我推断,它们意味着null以符号方式None在 Python 中实现它(特别是因为left并且right默认情况下None是TreeNode实现)。
PPS:上述线性树描述的工作原理如下:
您首先命名树的根元素
[3]
之后,您制作当前树的快照并从左到右命名所有尚未命名的叶子。如果一片叶子是空的,你只需调用它
null
(Python 特定的:)None
。重复 2 直到没有未命名的叶子
添加回答
举报
0/150
提交
取消