public static void Main()
node.Right = new Node(2);
node.Right.Parent = node;
node.Left.Left = new Node(1);
node.Left.Left.Parent = node.Left;
node.Left.Right = new Node(2);
node.Left.Right.Parent = node.Left;
node.Right.Left = new Node(1);
node.Right.Left.Parent = node.Right;
node.Right.Right = new Node(3);
node.Right.Right.Parent = node.Right;
Console.WriteLine(LongestConsecutiveBranch(node));
public static int LongestConsecutiveBranch(Node node)
return PostOrder(node) + 1;
public static int PostOrder(Node node)
var left = PostOrder(node.Left);
var right = PostOrder(node.Right);
Console.WriteLine(node.Data);
if (node.Parent != null && node.Data - 1 == node.Parent.Data)
Console.WriteLine("Return 1");