Вы только рекурсивно ищите первый узел, у которого есть дочерние элементы.
Вы должны переписать это последнее условие примерно так:
if (nodes[i].hasOwnProperty('children')) {
var node = this.Search(key, nodes[i].children);
if(node != null)
return node;
}
Вам также необходимо добавить регистр, если узел не найден - например, return null
в самом низу функции.