/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
new Ideone();
}
Ideone() {
NodeArbre target = new NodeArbre("month", null, null);
NodeArbre head = new NodeArbre("monday",
new NodeArbre("party", new NodeArbre("of", new NodeArbre("friday", null, null), target),
new NodeArbre("at", null, null)),
new NodeArbre("brother", null, null));
fa(head, target);
}
public boolean fa(NodeArbre inicial, NodeArbre fi, List<NodeArbre> visited) {
if (inicial == null)
return false;
visited.add(inicial);
if (inicial == fi) {
return true;
}
if (fa(inicial._esq, fi, visited))
return true;
else if (fa(inicial._dret, fi, visited))
return true;
visited.remove(inicial);
return false;
}
public void fa(NodeArbre inicial, NodeArbre fi) {
// assign the list to a variable if you want to do something with it...
// fa will return true if it found the path
}
}
class NodeArbre {
NodeArbre _esq;
NodeArbre _dret;
NodeArbre
(String contingut, NodeArbre _esq, NodeArbre _dret
) { this.contingut = contingut;
this._esq = _esq;
this._dret = _dret;
}
@Override
return contingut;
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCW5ldyBJZGVvbmUoKTsKCX0KCQoJSWRlb25lKCkgewoJCU5vZGVBcmJyZSB0YXJnZXQgPSBuZXcgTm9kZUFyYnJlKCJtb250aCIsIG51bGwsIG51bGwpOwoJCU5vZGVBcmJyZSBoZWFkID0gbmV3IE5vZGVBcmJyZSgibW9uZGF5IiwKCQkgIG5ldyBOb2RlQXJicmUoInBhcnR5IiwgbmV3IE5vZGVBcmJyZSgib2YiLCBuZXcgTm9kZUFyYnJlKCJmcmlkYXkiLCBudWxsLCBudWxsKSwgdGFyZ2V0KSwgCgkJICAgIG5ldyBOb2RlQXJicmUoImF0IiwgbnVsbCwgbnVsbCkpLCAKCQkgIG5ldyBOb2RlQXJicmUoImJyb3RoZXIiLCBudWxsLCBudWxsKSk7CgkJZmEoaGVhZCwgdGFyZ2V0KTsKCQkgIAoJCQoJfQoJCglwdWJsaWMgYm9vbGVhbiBmYShOb2RlQXJicmUgaW5pY2lhbCwgTm9kZUFyYnJlIGZpLCBMaXN0PE5vZGVBcmJyZT4gdmlzaXRlZCkgewoJICBpZiAoaW5pY2lhbCA9PSBudWxsKQoJICAgIHJldHVybiBmYWxzZTsKCSAgdmlzaXRlZC5hZGQoaW5pY2lhbCk7CgkgIGlmIChpbmljaWFsID09IGZpKSB7CgkgICAgU3lzdGVtLm91dC5wcmludGxuKHZpc2l0ZWQpOwoJICAgIHJldHVybiB0cnVlOwoJICB9CgkgIGlmIChmYShpbmljaWFsLl9lc3EsIGZpLCB2aXNpdGVkKSkKCSAgICByZXR1cm4gdHJ1ZTsKCSAgZWxzZSBpZiAoZmEoaW5pY2lhbC5fZHJldCwgZmksIHZpc2l0ZWQpKQoJICAgIHJldHVybiB0cnVlOwoJICB2aXNpdGVkLnJlbW92ZShpbmljaWFsKTsKCSAgcmV0dXJuIGZhbHNlOwoJfQoJcHVibGljIHZvaWQgZmEoTm9kZUFyYnJlIGluaWNpYWwsIE5vZGVBcmJyZSBmaSkgewoJICAvLyBhc3NpZ24gdGhlIGxpc3QgdG8gYSB2YXJpYWJsZSBpZiB5b3Ugd2FudCB0byBkbyBzb21ldGhpbmcgd2l0aCBpdC4uLgoJICAvLyBmYSB3aWxsIHJldHVybiB0cnVlIGlmIGl0IGZvdW5kIHRoZSBwYXRoCgkgIGZhKGluaWNpYWwsIGZpLCBuZXcgTGlua2VkTGlzdCgpKTsKCX0KfQoKY2xhc3MgTm9kZUFyYnJlIHsKCU5vZGVBcmJyZSBfZXNxOwoJTm9kZUFyYnJlIF9kcmV0OwoJU3RyaW5nIGNvbnRpbmd1dDsKCU5vZGVBcmJyZShTdHJpbmcgY29udGluZ3V0LCBOb2RlQXJicmUgX2VzcSwgTm9kZUFyYnJlIF9kcmV0KSB7CgkJdGhpcy5jb250aW5ndXQgPSBjb250aW5ndXQ7CgkJdGhpcy5fZXNxID0gX2VzcTsKCQl0aGlzLl9kcmV0ID0gX2RyZXQ7Cgl9CgkKCUBPdmVycmlkZQoJcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKCQlyZXR1cm4gY29udGluZ3V0OwoJfQp9