如果你只能使用一个向量(未指定问题),并且节点不应该包含它自己的列表,只有一些指针(向量中的地址),那么你可以试试这个:
所以对于像这样的树:
A
| \
B E ___
|\ \ \ \
C D F G H
Run Code Online (Sandbox Code Playgroud)
你的矢量看起来像:
idx: 0 1 2 3 4 5 6 7
nodes: A B C D E F G H
next: _ 4 3 _ _ 6 7 _
Run Code Online (Sandbox Code Playgroud)
其中_是空指针
编辑:
另一种方法:
对于那种方法,给定树看起来像:
idx: 0 1 2 3 4 5 6 7 8 9 A B
nodex: A _ B E _ C D _ F G H _
child: 2 5 8 _ _ _ _ _
Run Code Online (Sandbox Code Playgroud)
这样你就可以很容易地找到任意随机节点的子节点并重新组织数组而不移动所有元素(只需将子节点复制到表的末尾,更新指针并将下一个子节点添加到表的末尾)