public TriNode(int k, TriNode l, TriNode c, TriNode r) { this.key = k; this.left = l; this.center = c; this.right = r; }
static void Main(string[] args) { for (int i = 0; i < 3; i++) { TriNode A = crea(i); System.Console.WriteLine(" albero iniziale " + A); altera(A); System.Console.WriteLine(" albero alterato " + A); System.Console.WriteLine(); } }
/* * Il metodo altera riceve come argomento un albero ternario di int positivi. * Ogni nodo non foglia deve essere modificato, sostituendovi la somma degli * elementi del sottoalbero di cui radice compreso il precedente valore della * radice. * Alla fine la radice di tutto l'albero deve contenere la somma degli elementi * dell'albero di partenza. * La complessità deve essere di ordine lineare. * L'albero originario deve essere modificato */ public static int altera(TriNode a) { bool isFinished = false; while (!isFinished) { if (!IsLeaf(a)) { } } return(10); }
private static void pr1(TriNode a, StringBuilder s) { if (a == null) { return; } s.Append(" ("); s.Append(a.key + ""); pr1(a.left, s); pr1(a.center, s); pr1(a.right, s); s.Append(") "); }
private static TriNode crea(int i) { switch (i) { case 0: return(TriNode.n(1, TriNode.f(9), TriNode.f(6), TriNode.f(1))); case 1: return(TriNode.n(9, TriNode.n(8, TriNode.n(7, TriNode.f(4), TriNode.f(4), TriNode.f(9)), TriNode.f(5), TriNode.n(7, TriNode.f(6), TriNode.f(6), TriNode.f(7))), TriNode.f(5), TriNode.f(5))); case 2: return(null); } return(null); }
public static TriNode n(int i, TriNode l, TriNode c, TriNode r) { return(new TriNode(i, l, c, r)); }
private static bool IsLeaf(TriNode tn) { return((tn.left == null) && (tn.right == null) && (tn.center == null)); }