class Node {
Vector<Node*> m_children;
Node* m_next_sibling { nullptr };
Node* m_previous_sibling { nullptr };
}
Either m_children or m_next_sibling/m_previous_sibling are clearly superfluous.m_children + m_parent are enough for tree representation.