40 lines
1.3 KiB
C#
40 lines
1.3 KiB
C#
////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
//
|
|
// Microsoft Research Singularity
|
|
//
|
|
|
|
using System;
|
|
using System.Diagnostics;
|
|
using System.IO;
|
|
|
|
namespace Microsoft.Singularity.Applications
|
|
{
|
|
public class TreeTestBase { }
|
|
|
|
public class MkUnionTest
|
|
{
|
|
public static int SumTree(Tree tree) {
|
|
switch (tree.Tag) {
|
|
case Tree.TagValue.Leaf:
|
|
return 0;
|
|
case Tree.TagValue.Node:
|
|
Tree.Node node = tree.GetAsNode();
|
|
return node.Value + SumTree(node.Left) + SumTree(node.Right);
|
|
default:
|
|
Debug.Assert(false, "Unhandled alternative in switch over 'Tree'");
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
public static void Main() {
|
|
Tree tree = Tree.CreateNode(5, Tree.CreateNode(3, Tree.CreateLeaf(), Tree.CreateLeaf()),
|
|
Tree.CreateNode(8, Tree.CreateLeaf(), Tree.CreateLeaf()));
|
|
Console.WriteLine("Sum of tree nodes is " + SumTree(tree));
|
|
TreeTestBase testBase = (TreeTestBase)tree; // Should compile
|
|
Tree.Bar(); // Prints "Bar"
|
|
}
|
|
}
|
|
}
|