【问题标题】:implement tree structure as list in R在R中将树结构实现为列表
【发布时间】:2018-02-28 10:37:05
【问题描述】:

我正在尝试将这个简单的树结构实现为 R 中的列表:

  1
 / \
2  3
  / \
 4  5

我尝试的是这样的:

tree <- list(1, list(2, 3, list(4, 5)))

> tree
[[1]]
[1] 1

[[2]]
[[2]][[1]]
[1] 2

[[2]][[2]]
[1] 3

[[2]][[3]]
[[2]][[3]][[1]]
[1] 4

[[2]][[3]][[2]]
[1] 5

这是正确的吗?据我了解,这棵树如下所示:

   1
 / \ \
2  3  .
     / \
     4  5

更新

我也试过这个:

tree <- list(1, list(2, c(3, list(4, 5))))

但它看起来也不对

【问题讨论】:

  • 你看过data.tree吗?非常酷的包。
  • 还可以看看ape 包,它使用树结构相当健壮和高效(使用边缘表而不是嵌套列表)。

标签: r tree binary-tree


【解决方案1】:

考虑data.tree 包。它很好地打印了嵌套列表的结构:

tree <- list("1" = 1, 
             "2" = list(2), 
             "3" = list(3, "4" = list(4), "5" = list(5)))

data.tree::FromListSimple(tree, nodeName = "1")

返回:

  levelName
1 1        
2  ¦--2    
3  °--3    
4      ¦--4
5      °--5

【讨论】:

  • 所以我的解决方案是tree &lt;- list(1, list(2), list(3, list(4), list(5))),对吗?
【解决方案2】:

树只需要节点名。

tree <- list(data=1, 
             lchild=list(data=2), 
             rchild=list(data=3, 
                         lchild=list(data=4), 
                         rchild=list(data=5)))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-28
    • 2019-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-07
    相关资源
    最近更新 更多