【问题标题】:How to construct a binary tree from given input如何从给定的输入构造二叉树
【发布时间】:2017-09-04 21:12:33
【问题描述】:

我必须从一些给定的输入构造一棵二叉树。输入格式如下: .第一行表示接下来的数据行数(n)。 .接下来的 n 行表示以下形式的数据: 1.第一个字符是父节点 2.第二个字符是子节点 3.第三个字符是方向。(L代表左孩子,R代表右孩子)

示例输入如下:

9
1 2 R
1 3 L
2 4 R
2 5 L
3 6 R
3 7 L
5 8 R
5 9 L
7 10 R

有人可以指导我如何编写构建此二叉树的代码。 我知道这是一个非常简单的问题,但有人可以指导我如何解决这个问题。

我像这样构造了一个简单的 Tree 类:

class Tree:
    def __init__(self,x):
        self.data = x
        self.left = None
        self.right = None

但我无法继续逻辑。

感谢您的任何回答。

【问题讨论】:

    标签: python-3.x tree


    【解决方案1】:

    首先您需要了解二叉树的工作原理和tree traversal。 该算法的工作原理如下:

    1. Traverse tree to find parent (first number)
    2. If next char is R insert new Tree(secondNumber), else insert Tree at left
    3. Repeat
    

    将每个添加的节点另外保存在字典中并在字典中查找以立即找到它可能更容易。这仅在您的树不包含重复项时才有效。 经典的方法是进行树遍历。选择上面的任何链接算法。

    【讨论】:

    • 我什么时候遇到这样的行:2 4 R,其中 2 是父节点,那么我如何在节点 2 所在的 btree 中搜索。
    • 更新了我的答案。希望这会有所帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-25
    • 1970-01-01
    • 1970-01-01
    • 2014-06-26
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多