static int largestPath(treestruct t, node track, int sum) { if (track.lnode == null || track.rnode == null) { return(track.data); } if (unvisited != true) { sum += track.data; } sum += Math.Max(largestPath(t, track.lnode, sum), largestPath(t, track.rnode, sum)); if (lsum == 0) { lsum = sum; } else { rsum = sum; unvisited = true; } return(sum); }
static void Main(string[] args) { int[] treedata = { 25, 15, 7, 10, 12, 6, 5 }; int[] treedata1 = { 1, 2, 3, 4, 5, 6, 7 }; treestruct t = new treestruct(); //t.head = new node(25, new node(15,new node(10),new node(12)), new node(7, new node(6),new node(5))); t.head = new node(1, new node(2, new node(4), new node(5)), new node(3, new node(6), new node(7))); //BFS(t); largestPath(t, t.head, 0); Console.WriteLine(Math.Max(lsum, rsum - t.head.data)); Console.ReadLine(); }
static void BFS(treestruct t) { Queue <node> node = new Queue <node>(); node.Enqueue(t.head); while (node.Count > 0) { node item = node.Dequeue(); Console.WriteLine(item.data); if (item.lnode != null) { node.Enqueue(item.lnode); } if (item.rnode != null) { node.Enqueue(item.rnode); } } }
static treestruct createTree(treestruct t, int[] treearray, node track) { int i = 0; Queue <int> tnodes = new Queue <int>(); tnodes.Enqueue(treearray[i]); node tracker = track; while (tnodes.Count > 0) { int value = tnodes.Dequeue(); node temp = new node(value); if (tracker == null) { tracker = temp; } else if (tracker.lnode == null) { tracker.lnode = temp; } else if (tracker.rnode == null) { tracker.rnode = temp; } if (i < treearray.Length - 1) { i++; tnodes.Enqueue(treearray[i]); i++; tnodes.Enqueue(treearray[i]); } } return(t); }