Нарисуйте пользовательское двоичное дерево - PullRequest
0 голосов
/ 20 февраля 2019

Я пытаюсь нарисовать двоичное дерево (в частности, дерево выражений ), где каждый из узлов имеет либо двух дочерних, либо ни одного.Я сталкивался с этим решением с 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 (предпочтительно) будет подходить для достижения этого, мы надеемся, простым способом?

...