访问实现为嵌套列表的树的级别

时间:2018-03-01 08:20:14

标签: r tree binary-tree

我将此树实现为嵌套列表:

tree[[2]]

如何提取树的级别,在此示例中

第1级:[1] 第二级:[2,3] 第3级:[4,5]

2是第一级,这很容易。 但c(tree[[2]], tree[[3]][1])仅为master

所以第二级是git add

如何将此概括为任何表示为嵌套列表的树结构?

1 个答案:

答案 0 :(得分:1)

使用普通base R,您可以使用递归函数执行此操作(只要您的tree不太大)。例如:

getElems <- function(tree, depth, level) {
  if (depth == level) {
    if (is.list(tree)) 
      tree[[1]]
  } else {
    sapply(tree, getElems, depth = depth + 1, level = level)
  }
}

# first level
unlist(getElems(tree, 1, 1))
# second level (always starting the search from depth = 1)
unlist(getElems(tree, 1, 2))
# third level
unlist(getElems(tree, 1, 3))