예제 #1
0
  private int auxiliaryGetNumberOfNodes(GenericTreeNode<T> node) {
    int numberOfNodes = node.getNumberOfChildren();

    for (GenericTreeNode<T> child : node.getChildren()) {
      numberOfNodes += auxiliaryGetNumberOfNodes(child);
    }

    return numberOfNodes;
  }
예제 #2
0
  private GenericTreeNode<T> auxiliaryFind(GenericTreeNode<T> currentNode, T dataToFind) {
    GenericTreeNode<T> returnNode = null;
    int i = 0;

    if (currentNode.getData().equals(dataToFind)) {
      returnNode = currentNode;
    } else if (currentNode.hasChildren()) {
      i = 0;
      while (returnNode == null && i < currentNode.getNumberOfChildren()) {
        returnNode = auxiliaryFind(currentNode.getChildAt(i), dataToFind);
        i++;
      }
    }

    return returnNode;
  }
예제 #3
0
  private void buildPostOrder(GenericTreeNode<T> node, List<GenericTreeNode<T>> traversalResult) {
    for (GenericTreeNode<T> child : node.getChildren()) {
      buildPostOrder(child, traversalResult);
    }

    traversalResult.add(node);
  }
예제 #4
0
  private void buildPostOrderWithDepth(
      GenericTreeNode<T> node, Map<GenericTreeNode<T>, Integer> traversalResult, int depth) {
    for (GenericTreeNode<T> child : node.getChildren()) {
      buildPostOrderWithDepth(child, traversalResult, depth + 1);
    }

    traversalResult.put(node, depth);
  }