private static int Bfs(AdvancedNode root) { Queue <AdvancedNode> queue = new Queue <AdvancedNode>(); queue.Enqueue(root); int total = 0; while (queue.Count != 0) { AdvancedNode advancedNode = queue.Dequeue(); if (advancedNode.NodeTypes.Contains(NodeType.Child)) { total += advancedNode.Node.val; } if (advancedNode.Node.val % 2 == 0) { if (advancedNode.Left != null) { advancedNode.Left.NodeTypes.Add(NodeType.Parent); } if (advancedNode.Right != null) { advancedNode.Right.NodeTypes.Add(NodeType.Parent); } } if (advancedNode.NodeTypes.Contains(NodeType.Parent)) { if (advancedNode.Left != null) { advancedNode.Left.NodeTypes.Add(NodeType.Child); } if (advancedNode.Right != null) { advancedNode.Right.NodeTypes.Add(NodeType.Child); } } if (advancedNode.Left != null) { queue.Enqueue(advancedNode.Left); } if (advancedNode.Right != null) { queue.Enqueue(advancedNode.Right); } } return(total); }
private static AdvancedNode MakeAdvancedNodes(TreeNode node) { if (node != null) { AdvancedNode newNode = new AdvancedNode(node); newNode.Left = MakeAdvancedNodes(node.left); newNode.Right = MakeAdvancedNodes(node.right); return(newNode); } return(null); }
public static void TestMethod() { DataStructure <char, AdvancedNode <char> > d = new DataStructure <char, AdvancedNode <char> >(); d.RootNode = new AdvancedNode <char>(); d.RootNode.NextNode = new AdvancedNode <char>(); // type NO error! Will compile AdvancedNode <char> y = d.RootNode.NextNode; var rootNode = d.RootNode; var lastNode = rootNode.GetLastNode(); Console.WriteLine("Is y the last node? " + (lastNode == y)); Console.WriteLine("Is rootNode the last node? " + (lastNode == rootNode)); }