Java:
public static int nextInTree(BinNode<Queue<Integer>> lst )
{
if(lst == null)
return -1;
Queue<Integer> q = lst.getValue();
if( ! q.isEmpty() )
return q.head();
int left = nextInTree( lst.getLeft() );
if(left != -1)
return left;
return nextInTree( lst.getRight() );
}
C#:
public static int NextInTree(BinNode<Queue<int>> lst )
{
if(lst == null)
return -1;
Queue<int> q = lst.GetValue();
if( ! q.IsEmpty() )
return q.Head();
int left = NextInTree( lst.GetLeft() );
if(left != -1)
return left;
return NextInTree( lst.GetRight() );
}