Я пытаюсь отформатировать 2 (или идеально N) отключенные бинарные деревья бок о бок, и я хочу, чтобы форматирование было «правильным» для двоичного дерева, примерно как так:Боковые бинарные деревья в GraphViz
Даже если некоторые узлы отсутствуют, остальные должны оставаться именно там, где они есть.
Я сгенерировал приближение этого балансирования для одного дерева со сценарием под названием tree.gv
из this Stack answer:
dot one_tree.dot | gvpr -c -f tree.gv | neato -n -Tpdf -o tree.pdf
Это не идеально сбалансирован так, как я хотел бы, но это очень работоспособным.
Теперь я хочу несколько деревьев рядом друг с другом. Вот что я пытался:
dot trees.dot | neato -n -Goverlap=false -Tpdf -o tree.pdf
Должным бок о бок, но нижние черные листья должны быть растопыренными право, оставляя место для своих пропавших родственников.
dot trees.dot | gvpr -c -f tree.gv | neato -n -Tpdf -o tree.pdf
Каждое дерево правильно отформатирован, но они перекрывают друг друга.
Несомненно, объединение двух будет работать?
dot trees.dot | gvpr -c -f tree.gv | neato -n -Goverlap=false -Tpdf -o tree.pdf
Здесь trees.dot
:
digraph BST {
graph [center=true, margin=0.01, nodesep=0.1, ranksep=0.3, width=1,ratio=.25];
node [fontname="Arial",style=filled,color="0.0 0.0 0.0",fixedsize=true,width=0.15,shape=circle,label=""];
node [margin=0.01,fillcolor="lightgrey"];
edge [dir=none];
node [fillcolor="black"];
Lower;
Lower -> LowerR;
Lower -> LowerL;
LowerL -> LowerLR;
LowerR -> LowerRR;
node [fillcolor="red"];
Upper;
Upper -> UpperR;
Upper -> UpperL;
}
Спасибо, это направляя меня по дороге. Мне все равно хотелось бы, чтобы дерево выглядело сбалансированным (обновленный вопрос с желаемой картинкой). В вашем левом дереве два нижних узла должны быть сдвинуты влево немного. Если я выясню точную последовательность, я отправлю ее здесь. – supergra