我得到了这个二叉树
我想将其放入具有结构 (left_subtree, key, right_subtree) 的元组中(其中 left_subtree 和 right_subtree 本身就是元组。 我怎样才能以正确的方式做到这一点?
class TreeNode:
def __init__(self, key):
self.key = key
self.left = None
self.right = None
tree_tuple = (((None, 6, None), 4,2,(9, 7, 10)), 1,
((13, 11, 14),8, (15, 12, 16), 5, 3))
print(len(tree_tuple))
def parse_tuple(data):
if isinstance(data, tuple) and len(data) == 3:
node = TreeNode(data[1])
node.left = parse_tuple(data[0])
node.right = parse_tuple(data[2])
elif data is None:
node = None
else:
node = TreeNode(data)
return node
tree = parse_tuple(tree_tuple)
print(tree.right.right.left.right.key)
我尝试了这个,但显然我的元组结构甚至我的树本身有问题
我认为这就是您正在尝试做的事情。
您的 parse_tuple 确实也给出了 12 作为答案,问题在于您对 tree_tuple 的格式设置。
我只是修改了我的处理方式。
class TreeNode:
def __init__(self, key):
self.key = key
self.left = None
self.right = None
tree_tuple = (
(((None, 6, (None, 9, None)), 4, (None, 7, (None, 10, None))), 2, None), 1,
(
(
((None, 13, None), 11, (None, 14, None)),
8,
(None, 12, (None, 15, (None, 16, None))),
),
3,
None,
),
)
def parse_tuple(data):
if isinstance(data, tuple) and len(data) == 3:
node = TreeNode(data[1])
node.left = parse_tuple(data[0])
node.right = parse_tuple(data[2])
return node
elif data is None:
return None
else:
raise ValueError("Invalid Tuple Format")
tree = parse_tuple(tree_tuple)
print(tree.right.left.right.key