2016-05-27 52 views
3

我有一个看起来像这样的网络/树。以编程方式分配节点到分层树/网络

enter image description here

我已经使用二进制树来表示这种模式。然而手动分配节点的rightleft参数成为累赘为水平> 4.

是否有通过我可以做上述分配的方法编程

回答

4

可以在第一创建节点,其中的2D阵列行i对应于你的论文水平i,和列j相当于该级别的j个节点:

for i = 1 to n: 
    for j = 1 to i: 
     A[i][j] = new Node() 

然后,节点之间的关系是,在A[i][j]节点已经离开孩子A[i+1][j]并有权利的孩子是A[i+1][j+1]

for i = 1 to n-1: 
    for j = 1 to i: 
     A[i][j].left = A[i+1][j] 
     A[i][j].right = A[i+1][j+1] 

for j = 1 to n: 
    A[n][j].left = null 
    A[n][j].right = null 
相关问题