2015-10-30 10 views
1

У меня есть дерево, содержащее несколько узлов. Каждый узел имеет родительский узел (или null в случае корня), имя (имя) и HashTable (дочерние элементы), который сопоставляет имя дочернего узла дочернему узлу.Как найти определенный узел в двоичном дереве?

Учитывая строковое имя узла, я хочу создать метод, который выполняет итерацию через дерево, чтобы найти конкретный узел и вернуть его. Если узел не существует, верните значение null.

Я думал, что рекурсивный метод будет лучше. До сих пор у меня есть следующее:

public Node findNode(Node n, String s) { 
    if (n.name == s) { 
     return n; 
    } else { 
     for (Node child: n.children.values()) { 
      findNode(child, s); 
     } 
    } 
} 

Я не уверен, где именно положить нулевое утверждение.

ответ

3

Если у ребенка есть это, верните его. Если нет, верните null.

public Node findNode(Node n, String s) { 
    if (n.name == s) { 
     return n; 
    } else { 
     for (Node child: n.children.values()) { 
      Node result = findNode(child, s); 
      if (result != null) { 
       return result; 
      } 
     } 
    } 
    return null; 
} 
Смежные вопросы