You may have children accounted as DL list and so each Node should have m_next / m_previous node references.
+ Parent node to have m_first_child reference (if list is circular).
+ m_parent (Node) reference.
So you need 4 pointers per each non-terminal node. Or 3 pointers for terminals.
Otherwise (vector of children):
You need only m_parent (Node) reference in terminals.
And in container nodes additional vector<NodePtr> m_children; to store child references.
m_children + m_parent are enough for tree representation.