In relation to this question: What is a better way to model a treeNode?
I am thinking how to define similar trees in c# so that they would have the same difference. So, having
type TreeNode = | TreeNode of int * (TreeNode option) * (TreeNode option) * (TreeNodeoption)
type Node = | Node of int * Node * Node
| None
According to @Tomas Petricek answer, the difference between those two types is that the first one doesn't allow to create a truly empty tree. A TreeNode would always have a int value in it.
What is the way to express this in C#?