将可视化二叉树放入元组中

问题描述 投票:0回答:1

我得到了这个二叉树

我想将其放入具有结构 (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)

我尝试了这个,但显然我的元组结构甚至我的树本身有问题

python-3.x data-structures tuples binary-search-tree
1个回答
0
投票

我认为这就是您正在尝试做的事情。

您的 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
© www.soinside.com 2019 - 2024. All rights reserved.