本文整理汇总了C#中Tree.Find方法的典型用法代码示例。如果您正苦于以下问题:C# Tree.Find方法的具体用法?C# Tree.Find怎么用?C# Tree.Find使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Tree
的用法示例。
在下文中一共展示了Tree.Find方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Run
void Run()
{
Scanner input = new Scanner(Console.In);
int N = input.NextInt();
char[] op = new char[N];
int[] arg = new int[N];
List<int> keys = new List<int>();
for (int i = 0; i < N; i++) {
string s = input.Next();
op[i] = char.ToUpper(s[0]);
arg[i] = input.NextInt();
if (op[i] == 'P')
keys.Add(arg[i]);
if (op[i] != 'P' && op[i] != 'G')
throw new Exception();
}
Tree tree = new Tree(keys.ToArray());
for (int i = 0; i < N; i++) {
if (op[i] == 'P') {
tree.Add(arg[i]);
} else {
try {
tree.Remove(tree.Find(arg[i]));
} catch (Exception e) {}
}
}
int[] res = tree.ToArray();
foreach (int i in res)
Console.WriteLine(i);
if (res.Length == 0)
Console.WriteLine("empty");
}
示例2: DeleteLeaf_LeftChild
public void DeleteLeaf_LeftChild()
{
var t = new Tree<int>();
t.Add(23);
t.Add(20);
t.Add(25);
t.Add(24);
t.Add(33);
t.Add(10);
t.Add(7);
t.Add(8);
t.Delete(8);
Assert.AreEqual(23, t.Root.Item);
Assert.AreEqual(20, t.Root.Left.Item);
Assert.AreEqual(10, t.Root.Left.Left.Item);
Assert.AreEqual(7, t.Root.Left.Left.Left.Item);
Assert.AreEqual(25, t.Root.Right.Item);
Assert.AreEqual(24, t.Root.Right.Left.Item);
Assert.AreEqual(33, t.Root.Right.Right.Item);
Assert.IsNull(t.Find(8));
}
示例3: Crossover
public static void Crossover(Tree t1, Tree t2)
{
Tree tmp1 = t1.Find(Program.RandomGenerator.Next());
Tree tmp2 = t2.Find(Program.RandomGenerator.Next());
Swap(tmp1, tmp2);
}
示例4: NewMethod
private static void NewMethod(ConcurrentQueue<Tuple<Map, char>> queue, Tree tree, Map currentMap, KeyValuePair<char, Tuple<Point, int, Direction>> kvp, Map move)
{
var moveNode = tree.Find(move);
if (moveNode == null) {
tree.AddNeighbor(currentMap, move);
queue.Enqueue(new Tuple<Map, char>(move, kvp.Key));
//Console.WriteLine("Queued:\n" + move);
}
else ;// tree.AddNeighbor(currentMap, moveNode);
}
示例5: DeleteNodeWithSingleChild_LeftParentLeftChild
public void DeleteNodeWithSingleChild_LeftParentLeftChild()
{
var t = new Tree<int>();
t.Add(22);
t.Add(20);
t.Add(25);
t.Add(24);
t.Add(33);
t.Add(10);
t.Add(7);
t.Add(8);
t.Add(23);
t.Delete(24);
Assert.AreEqual(22, t.Root.Item);
Assert.AreEqual(20, t.Root.Left.Item);
Assert.AreEqual(10, t.Root.Left.Left.Item);
Assert.AreEqual(8, t.Root.Left.Left.Left.Right.Item);
Assert.AreEqual(25, t.Root.Right.Item);
Assert.AreEqual(23, t.Root.Right.Left.Item);
Assert.AreEqual(7, t.Root.Left.Left.Left.Item);
Assert.AreEqual(33, t.Root.Right.Right.Item);
Assert.IsNull(t.Find(24));
}
示例6: FindNonExistingKeyReturnsNull
public void FindNonExistingKeyReturnsNull()
{
var t = new Tree<int>();
t.Add(23);
t.Add(20);
t.Add(25);
t.Add(24);
t.Add(33);
t.Add(10);
t.Add(7);
t.Add(8);
var actual = t.Find(101);
Assert.IsNull(actual);
}
示例7: FindInMiddle
public void FindInMiddle()
{
var t = new Tree<int>();
t.Add(23);
t.Add(20);
t.Add(25);
t.Add(24);
t.Add(33);
t.Add(10);
t.Add(7);
t.Add(8);
var actual = t.Find(10);
Assert.AreEqual(t.Root.Left.Left, actual);
}
示例8: DeleteNodeWithTwoChildren
public void DeleteNodeWithTwoChildren()
{
var t = new Tree<int>();
t.Add(22);
t.Add(20);
t.Add(25);
t.Add(24);
t.Add(33);
t.Add(10);
t.Add(7);
t.Add(8);
t.Add(23);
t.Add(35);
t.Delete(25);
Assert.AreEqual(22, t.Root.Item);
Assert.AreEqual(20, t.Root.Left.Item);
Assert.AreEqual(10, t.Root.Left.Left.Item);
Assert.AreEqual(8, t.Root.Left.Left.Left.Right.Item);
Assert.AreEqual(7, t.Root.Left.Left.Left.Item);
Assert.AreEqual(24, t.Root.Right.Item);
Assert.AreEqual(23, t.Root.Right.Left.Item);
Assert.AreEqual(33, t.Root.Right.Right.Item);
Assert.AreEqual(35, t.Root.Right.Right.Right.Item);
Assert.IsNull(t.Find(25));
}