Typed functional languages usually do, as mentioned by others. This is form of Algebraic Data Type called a Sum Type (as oppose to a Product type, which is basically a normal struct).
Here's some examples of creating a binary tree in different languages (also Lemmy's code formatter is terrible)
Examples
Haskell
data Tree a = Empty | Leaf a | Node (Tree a) (Tree a)
F#
type Tree<'a> = Empty | Leaf of 'a | Node of (Tree<'a> * Tree<'a>)
Scala
sealed trait Tree[+A]
case class Empty[A]() extends Tree[A]
case class Leaf[A](a: A) extends Tree[A]
case class Node[A](left: Tree[A], right: Tree[A]) extends Tree[A]
Rust
enum Tree<T> {
Empty,
Leaf(T),
Node(Box<Tree<T>>, Box<Tree<T>>),
}
Glad to see the USA's plan to support their "Southern Neighbourhood" is via sanctioning them. A classic, foolproof strategy that never causes unjust suffering.
I really like this short video (15:07 in length) of Fred M'membe and Kyeretwie Opoku discussing China vs the West's relationship with Africa and the historical context, and China's history of helping Africa when the West refused.
Although it pains me to say that the US Embassador to the UN is right about something, I can agree that the "choice would be simple".