// BEGIN treeNode
template <class T>
class TreeNode
{
 public:
  T value;
  unsigned int depth;                  // 0 .. N, the current depth of this node
  unsigned int childNum;               // which child # of the parent this node is
  vector<TreeNode<T> *> children;
};
// END treeNode
