Я пытаюсь нарисовать двоичное дерево (в частности, дерево выражений ), где каждый из узлов имеет либо двух дочерних, либо ни одного.Я сталкивался с этим решением с igraph :
library(igraph)
g= graph_from_literal(1 - 2,
1 - 3,
2 - 4,
2 - 5)
V(g)$label <- c("+","*","X3","1","X1")
plot(g, layout = layout.reingold.tilford(g, root=1), vertex.size=25)
, и оно прекрасно работает!Однако я хотел бы нарисовать пользовательские деревья с разными размерами, которые будут считываться из кода.
Код изначально находится в двоичном коде, и я могу преобразовать его во что-то более простое, например, список со следующими векторами
c("+","*")
c(NA,1)
c("X3","X1")
, которое является пользовательским представлением дерева выше: первый вектор представляет операторы сверху вниз дерева, а второй и третий векторы представляют первый и второй операнды каждой операции (NA означает, что операнд фактически являетсяВ результате операции, в данном случае исходя из второго оператора (*), числа являются константами, а «X $» означает чтение из переменной $)
Какая форма функции igraph (предпочтительно) будет подходить для достижения этого, мы надеемся, простым способом?