我必须从一些给定的输入构造一个二叉树。输入内容如下: 。第一行表示接下来的数据行数(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
但我无法继续使用逻辑。
感谢您的回答。
答案 0 :(得分: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
在字典中另外保存每个添加的节点并在字典中进行查找以立即找到它可能更容易。这仅在您的树不包含重复项时才有效。 经典的方法是做树遍历。选择上面的任何链接算法。