3.3.17 #
解答 #
创建一个数组并随机打乱即可,下面是两个例子:
G,A,E,K,H,D,F,L,C,O,I,B,M,P,J,N
|-------------------------------G-------------------------------|
A---------------| |---------------K---------------|
|-------E-------| H-------| L-------|
|---D F I---| |---O---|
|-C J M-| P
B N
||-------------------------------L-------------------------------|
|---------------E---------------| |---------------O---------------|
|-------C-------| ||-------J-------| ||-------N P
||---B D |---H---| K M
A ||-G I
F
第二个例子:
A,N,C,J,F,O,B,M,P,L,K,D,E,H,G,I
A---------------------------------------------------------------|
|-------------------------------N-------------------------------|
|---------------C---------------| O---------------|
B |-------J-------| P
|---F---| |---M
D-| |-H-| |-L
E G I K
||---------------J---------------|
|-------E-------| ||-------N-------|
|---C---| |---G---| |---L---| ||---P
||-B D F ||-I K M O
A H
代码 #
using BalancedSearchTree;
var keys = Enumerable.Range(0, 16).Select(x => (char)('A' + x)).ToArray();
Shuffle(keys);
var bst = new Bst<char, int>();
var redBlackTree = new RedBlackBst<char, int>();
foreach (var key in keys)
{
bst.Put(key, 1);
redBlackTree.Put(key, 1);
}
Console.WriteLine(string.Join(',', keys));
Console.WriteLine(bst);
Console.WriteLine(redBlackTree);
static void Shuffle<T>(T[] keys)
{
var random = new Random();
var length = keys.Length;
for (var i = 0; i < length; i++)
{
var r = i + random.Next(length - i);
var t = keys[r];
keys[r] = keys[i];
keys[i] = t;
}
}