def +
[B
>: A
<% Ordered
[B
]](x
: B
): Tree
[B
] }
def +
[B
>: A
<% Ordered
[B
]](x
: B
) = if (x
<= value
) Node
(value, left + x, right
) else Node
(value, left, right + x
)
s"Tree(${value.toString}, ${left.toString}, ${right.toString})"
}
def +
[B
<% Ordered
[B
]](x
: B
) = Node
(x
)
}
def apply
[A
](value
: A
): Node
[A
] = Node
(value, End, End
) }
def apply
[T
<% Ordered
[T
]](l
: List
[T
]): Tree
[T
] = l.foldLeft(End: Tree[T])((r, e) => r + e)
}
val list
= List
(9,
2,
1,
4,
7,
11) println(tree)
}
c2VhbGVkIHRyYWl0IFRyZWVbK0FdIHsKICBkZWYgK1tCID46IEEgPCUgT3JkZXJlZFtCXV0oeDogQik6IFRyZWVbQl0KfQoKY2FzZSBjbGFzcyBOb2RlWytBXSh2YWx1ZTogQSwgbGVmdDogVHJlZVtBXSwgcmlnaHQ6IFRyZWVbQV0pIGV4dGVuZHMgVHJlZVtBXSB7CiAgZGVmICtbQiA+OiBBIDwlIE9yZGVyZWRbQl1dKHg6IEIpID0KICAgIGlmICh4IDw9IHZhbHVlKSBOb2RlKHZhbHVlLCBsZWZ0ICsgeCwgcmlnaHQpCiAgICBlbHNlIE5vZGUodmFsdWUsIGxlZnQsIHJpZ2h0ICsgeCkKCiAgb3ZlcnJpZGUgZGVmIHRvU3RyaW5nID0KICAgIHMiVHJlZSgke3ZhbHVlLnRvU3RyaW5nfSwgJHtsZWZ0LnRvU3RyaW5nfSwgJHtyaWdodC50b1N0cmluZ30pIgp9CgpjYXNlIG9iamVjdCBFbmQgZXh0ZW5kcyBUcmVlW05vdGhpbmddIHsKICBkZWYgK1tCIDwlIE9yZGVyZWRbQl1dKHg6IEIpID0gTm9kZSh4KQoKICBvdmVycmlkZSBkZWYgdG9TdHJpbmcgPSAiLiIKfQoKb2JqZWN0IE5vZGUgewogIGRlZiBhcHBseVtBXSh2YWx1ZTogQSk6IE5vZGVbQV0gPSBOb2RlKHZhbHVlLCBFbmQsIEVuZCkKfQoKb2JqZWN0IFRyZWUgewogIGRlZiBhcHBseVtUIDwlIE9yZGVyZWRbVF1dKGw6IExpc3RbVF0pOiBUcmVlW1RdID0KICAgIGwuZm9sZExlZnQoRW5kOiBUcmVlW1RdKSgociwgZSkgPT4gciArIGUpCn0KCm9iamVjdCBNYWluIGV4dGVuZHMgQXBwIHsKICB2YWwgbGlzdCA9IExpc3QoOSwyLDEsNCw3LDExKQogIHZhbCB0cmVlID0gVHJlZShsaXN0KQogIHByaW50bG4odHJlZSkKfQ==
Tree(9, Tree(2, Tree(1, ., .), Tree(4, ., Tree(7, ., .))), Tree(11, ., .))