Question: Consider a recursive structure to represent a tree node where each node can have multiple child nodes. Define a `TreeNode` structure that contains an integer value, a pointer to the first child node, and a pointer to the next sibling node. Implement a C function that:
→ Dynamically creates a tree structure with a root node and at least two levels of children.
→ Traverses the tree and prints the value of each node.
→ Explain how memory is managed and demonstrate proper memory deallocation.