<< Demo036 >> << Section 3.2: Arbitrary Trees >> use ArbitraryTrees(Tree, text); << A / | \ / | \ B C D / \ / | \ / \ / | \ E F G H I >> TB = Tree("B", { Leaf("E"), Leaf("F")}); TC = Leaf("C"); TD = Tree("D", { Leaf("G"), Leaf("H"), Leaf("I")}); TA = Tree("A", { TB, TC, TD }); TA? Nodes(TA)? L = { Items(TA) }; L? double(Tree) -> nothing; double(aTree) = [ Node = Nodes(aTree); << all nodes of the tree >> Letter = Item(Node); ChangeItem(Node, Letter & Letter)]; double(TA)? TA? Mirror(Tree) -> Tree; Mirror(T) = [ChangeSubtrees(T,{Mirror(prioritems(Subtrees(T)))}); T]; Mirror(TA)? TA? Member(TA,"EE")? Search(TA,"BB")? ST = Subtrees(TA); add(ST,Tree("PQ", alist(Tree))); TA?