相关疑难解决方法(0)

在.dot树中强制执行水平节点排序

我正在尝试使用GraphViz重新创建二叉搜索树的示例图.这是它最终应该看起来的样子:

在此输入图像描述

这是我的第一次尝试:

digraph G {
    nodesep=0.3;
    ranksep=0.2;
    margin=0.1;
    node [shape=circle];
    edge [arrowsize=0.8];
    6 -> 4;
    6 -> 11;
    4 -> 2;
    4 -> 5;
    2 -> 1;
    2 -> 3;
    11 -> 8;
    11 -> 14;
    8 -> 7;
    8 -> 10;
    10 -> 9;
    14 -> 13;
    14 -> 16;
    13 -> 12;
    16 -> 15;
    16 -> 17;
}
Run Code Online (Sandbox Code Playgroud)

但不幸的是GraphViz并不关心树的水平位置,所以我得到:

在此输入图像描述

如何添加约束以使顶点的水平位置反映其总排序?

binary-tree dot graphviz

19
推荐指数
1
解决办法
8493
查看次数

从python中的列表构造二叉树的最佳方法

假设每个节点都有self.left,self.rightself.data,从每个级别给出数字的列表中构造二叉树而不是二叉搜索树(BST)的最佳方法是什么。其中第一个数字是级别 1,接下来的 2 是级别 2,接下来的 4 是级别 3,依此类推。例如

input: [3,5,2,1,4,6,7,8,9,10,11,12,13,14] 
Run Code Online (Sandbox Code Playgroud)

构造一棵树:

          3
       /     \
     5         2
    /\         /\
   1  4       6   7
  /\  /\     /\   /\
 8 9 10 11 12 13 14
Run Code Online (Sandbox Code Playgroud)

一种解决方案是:

for node at index i,
left child index = 2i+1
right child index = 2i+2
Run Code Online (Sandbox Code Playgroud)

想知道是否还有其他可能的方法

python tree

8
推荐指数
3
解决办法
1万
查看次数

标签 统计

binary-tree ×1

dot ×1

graphviz ×1

python ×1

tree ×1