class Idiom9
{
static class BinTree<T extends Comparable<T>> {
T value;
BinTree<T> left;
BinTree<T> right;
BinTree(T value) {
this.value = value;
}
@Override
StringBuilder sb = new StringBuilder();
sb.append("(");
sb.append(value);
sb.append(" ");
sb.append(left==null ? "()" : left);
sb.append(right==null ? "()" : right);
sb.append(")");
return sb.toString();
}
}
public static void main
(String[] args
) {
BinTree<Integer> five = new BinTree<>(5);
BinTree<Integer> one = new BinTree<>(1);
BinTree<Integer> eight = new BinTree<>(8);
BinTree<Integer> six = new BinTree<>(6);
five.left = one;
five.right = eight;
eight.left = six;
}
}
Y2xhc3MgSWRpb205CnsKCXN0YXRpYyBjbGFzcyBCaW5UcmVlPFQgZXh0ZW5kcyBDb21wYXJhYmxlPFQ+PiB7CiAgICAgICAgVCB2YWx1ZTsKICAgICAgICBCaW5UcmVlPFQ+IGxlZnQ7CiAgICAgICAgQmluVHJlZTxUPiByaWdodDsKCiAgICAgICAgQmluVHJlZShUIHZhbHVlKSB7CiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTsKICAgICAgICB9CiAKCQlAT3ZlcnJpZGUKCQlwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgewoJCQlTdHJpbmdCdWlsZGVyIHNiID0gbmV3IFN0cmluZ0J1aWxkZXIoKTsKCQkJc2IuYXBwZW5kKCIoIik7CiAgICAgICAgICAgIHNiLmFwcGVuZCh2YWx1ZSk7CgkJCXNiLmFwcGVuZCgiICIpOwogICAgICAgICAgICBzYi5hcHBlbmQobGVmdD09bnVsbCA/ICIoKSIgOiBsZWZ0KTsKICAgICAgICAgICAgc2IuYXBwZW5kKHJpZ2h0PT1udWxsID8gIigpIiA6IHJpZ2h0KTsKCQkJc2IuYXBwZW5kKCIpIik7CgkJCXJldHVybiBzYi50b1N0cmluZygpOwoJCX0KCX0KIAoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpCgl7CiAgICAgICAgQmluVHJlZTxJbnRlZ2VyPiBmaXZlID0gbmV3IEJpblRyZWU8Pig1KTsKICAgICAgICBCaW5UcmVlPEludGVnZXI+IG9uZSA9IG5ldyBCaW5UcmVlPD4oMSk7CiAgICAgICAgQmluVHJlZTxJbnRlZ2VyPiBlaWdodCA9IG5ldyBCaW5UcmVlPD4oOCk7CgkJQmluVHJlZTxJbnRlZ2VyPiBzaXggPSBuZXcgQmluVHJlZTw+KDYpOwogICAgICAgIGZpdmUubGVmdCA9IG9uZTsKICAgICAgICBmaXZlLnJpZ2h0ID0gZWlnaHQ7CiAgICAgICAgZWlnaHQubGVmdCA9IHNpeDsKCiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGZpdmUpOwoJfQp9