I\'d like to change the code to be tail recursive not to overflow the stack expression is an ADT of Label or Tree