如何在简单的二叉树中选择节点在哪一侧?
How to pick which side a node is on in a simple binary tree?
在一个简单的二叉树中,我可以通过添加不可见的节点和不可见的边来使图形看起来正确,例如来自:
digraph
{
vertex_1 [label="A"];
vertex_2 [label="B"];
vertex_2 -> vertex_1 [label="Left"];
}
产生:
至:
digraph
{
vertex_1 [label="A"];
vertex_2 [label="B"];
vertex_0 [style=invis];
vertex_2 -> vertex_1 [label="Left"];
vertex_2 -> vertex_0 [style=invis];
}
产生:
但是当我用一个 4 节点图(它最初是直上直下)尝试这个技巧时,我得到的是:
digraph
{
vertex_1 [label="A"];
vertex_2 [label="B"];
vertex_3 [label="F"];
vertex_4 [label="G"];
vertex_01 [style=invis];
vertex_02 [style=invis];
vertex_03 [style=invis];
vertex_4 -> vertex_3 [label="Left"];
vertex_3 -> vertex_1 [label="Left"];
vertex_1 -> vertex_02 [style=invis];
vertex_4 -> vertex_03 [style=invis];
vertex_3 -> vertex_01 [style=invis];
vertex_1 -> vertex_2 [label="Right"];
}
产生了:
显然我希望 B 在 A 的右侧。我尝试将不可见边语句和实际边的顺序从 B 切换到 A,比如哪个先出现,但这没有区别。我如何告诉程序将特定节点或边缘放在特定一侧?
对于从左到右的顺序,节点创建顺序是相关的。左节点必须在其右兄弟节点之前创建。
digraph
{
vertex_1 [label="A"];
vertex_02 [style=invis];
vertex_2 [label="B"];
vertex_3 [label="F"];
vertex_4 [label="G"];
vertex_01 [style=invis];
vertex_03 [style=invis];
vertex_4 -> vertex_3 [label="Left"];
vertex_3 -> vertex_1 [label="Left"];
vertex_1 -> vertex_02 [style=invis];
vertex_4 -> vertex_03 [style=invis];
vertex_3 -> vertex_01 [style=invis];
vertex_1 -> vertex_2 [label="Right"];
}
在一个简单的二叉树中,我可以通过添加不可见的节点和不可见的边来使图形看起来正确,例如来自:
digraph
{
vertex_1 [label="A"];
vertex_2 [label="B"];
vertex_2 -> vertex_1 [label="Left"];
}
产生:
至:
digraph
{
vertex_1 [label="A"];
vertex_2 [label="B"];
vertex_0 [style=invis];
vertex_2 -> vertex_1 [label="Left"];
vertex_2 -> vertex_0 [style=invis];
}
产生:
但是当我用一个 4 节点图(它最初是直上直下)尝试这个技巧时,我得到的是:
digraph
{
vertex_1 [label="A"];
vertex_2 [label="B"];
vertex_3 [label="F"];
vertex_4 [label="G"];
vertex_01 [style=invis];
vertex_02 [style=invis];
vertex_03 [style=invis];
vertex_4 -> vertex_3 [label="Left"];
vertex_3 -> vertex_1 [label="Left"];
vertex_1 -> vertex_02 [style=invis];
vertex_4 -> vertex_03 [style=invis];
vertex_3 -> vertex_01 [style=invis];
vertex_1 -> vertex_2 [label="Right"];
}
产生了:
显然我希望 B 在 A 的右侧。我尝试将不可见边语句和实际边的顺序从 B 切换到 A,比如哪个先出现,但这没有区别。我如何告诉程序将特定节点或边缘放在特定一侧?
对于从左到右的顺序,节点创建顺序是相关的。左节点必须在其右兄弟节点之前创建。
digraph
{
vertex_1 [label="A"];
vertex_02 [style=invis];
vertex_2 [label="B"];
vertex_3 [label="F"];
vertex_4 [label="G"];
vertex_01 [style=invis];
vertex_03 [style=invis];
vertex_4 -> vertex_3 [label="Left"];
vertex_3 -> vertex_1 [label="Left"];
vertex_1 -> vertex_02 [style=invis];
vertex_4 -> vertex_03 [style=invis];
vertex_3 -> vertex_01 [style=invis];
vertex_1 -> vertex_2 [label="Right"];
}