【问题标题】:How to build binary tree knowing only which nodes are connected?如何构建只知道哪些节点连接的二叉树?
【发布时间】:2016-05-21 22:34:21
【问题描述】:

我必须构建一棵二叉树,但我不知道哪个节点是父节点、左子节点或右子节点。我只知道连接了哪些节点。示例:对于这样的输入:

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

(从 1 开始,总是有一条路径)树应该是这样的:

一个输入我也给出了节点数。有什么想法、提示吗?

【问题讨论】:

  • 从 1 开始进行广度优先搜索
  • 因此,您将根据先带的孩子构建isomorphic 图表。

标签: algorithm graph binary-tree


【解决方案1】:

从边缘列表中,可以轻松创建一棵树。

您可以找到哪些是叶子节点,只需搜索哪些节点只出现在一条边上。 但是,不可能知道哪个叶子节点是树的头部。 在树结构中,可以选择任何叶子,将其选为头部,然后重新排序树,这将是一棵有效的树。

还有树同构的问题,可以交换左右子树得到有效树。

总而言之,从这个列表中,您可以获得 6 个正面,并且在每 4 个可能的交换中,总共有 24 个不同的有效树。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多