root = root.children.value.equals (temp) не присваивает root.child пользователю root, а присваивает ему значение true или false, потому что вы проверяете, равно ли оно значению temp или нет.
также java не позволяет иметь оператор if, который возвращает значение различных типов от государственных деятелей if.
это вернет последний корень в цепочке, это значение, которое вы ищете?
попробуй
TriesNode findFinalRoot(TriesNode root, String key){
if(key.length() == 0 )
return root;
for(int x = 0 ; x <root.children.lenth(); x++)
if (key.charAt(0) == root.children.get(x).charAt(0)){
findFinalRoot(root,key.subString(1)); // here you loss first character
}