[英]How do I make TreeNode from list by Python
最近,我开始学习编程的“leetcode”。 有时,我会遇到与 TreeNode 相关的问题。 https://leetcode.com/problems/longest-univalue-path/
我通常在本地运行代码以确保我的代码是否有效。 但是这些问题需要我提前准备好TreeNode,否则我无法在本地运行。 我不知道如何从列表中构建 TreeNode。
我想从 Python 的列表中制作 TreeNode,就像这里一样。
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
input: [5,4,5,1,1,5]
output:
TreeNode{val: 5, left: TreeNode{val: 4, left: TreeNode{val: 1, left: None, right: None}, right: TreeNode{val: 1, left: None, right: None}}, right: TreeNode{val: 5, left: TreeNode{val: 5, left: None, right: None}, right: None}}
我知道我们可以确定代码在 leetcode 上是否有效。 但是,我认为检查 leetcode 上的代码对我来说很慢。 我想在本地运行我的代码。 我希望你能帮助我。
猜猜这是你需要的:
class TreeNode(object):
def __init__(self, x):
self.val = x
self.left = None
self.right = None
def creatBTree(data, index):
pNode = None
if index < len(data):
if data[index] == None:
return
pNode = TreeNode(data[index])
pNode.left = creatBTree(data, 2 * index + 1) # [1, 3, 7, 15, ...]
pNode.right = creatBTree(data, 2 * index + 2) # [2, 5, 12, 25, ...]
return pNode
假设您正在破解pathSum ,通过调用填充树
lst = [5,4,8,11,None,13,4,7,2,None,None,None,1]
root = creatBTree(lst, 0)
看看 LeetCode 的官方解释https://support.leetcode.com/hc/en-us/articles/360011883654-What-does-1-null-2-3-mean-in-binary-tree-representation-的他们将二叉树的序列化格式转换为您在测试用例中看到的那种列表是如何工作的。 如果您想在本地针对这些测试用例运行解决方案,您还需要编写一些代码(或者我相信您可以在网上找到一些代码),这些代码将输入序列化列表、构建树并返回树的根TreeNode,因此您可以将其传递给您的find_longest_univalue_path
function。
这里只是美化了 StefanPochmann的解决方案,在LeetCode 的帮助中心有描述
class TreeNode:
def __init__(self, val, left=None, right=None):
self.val = val
self.left = left
self.right = right
def __repr__(self):
return 'TreeNode({})'.format(self.val)
def deserialize(string):
if string == '[]':
return None
nodes = [None if val == 'null' else TreeNode(int(val))
for val in string.strip('[]').split(',')]
kids = nodes[::-1]
root = kids.pop()
for node in nodes:
if node:
if kids:
node.left = kids.pop()
if kids:
node.right = kids.pop()
return root
if __name__ == '__main__':
tree = deserialize('[3,9,20,null,null,15,7]')
assert tree == TreeNode(3, TreeNode(9), TreeNode(20, TreeNode(15), TreeNode(7)))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.