본문 바로가기
Develop/Algorithm

treeDFS - 깊이 우선 탐색 알고리즘

by jaeyoungb 2022. 10. 25.
import java.util.*;

public class Solution { 
  public ArrayList<String> dfs(tree node) {
    ArrayList<String> values = new ArrayList<>();
    values.add(node.getValue());

    if(node.getChildrenNode() != null) {
      for(int i = 0; i < node.getChildrenNode().size(); i++) {
        ArrayList<String> curList = dfs(node.getChildrenNode().get(i));
        values.addAll(curList);
      }
    }
    return values;
  }

  public static class tree {
    private String value;
    private ArrayList<tree> children;

    public tree(String data) {
      this.value = data;
      this.children = null;
    }

    public tree addChildNode(tree node) {
      if(children == null) children = new ArrayList<>();
      children.add(node);
      return children.get(children.size() - 1);
    }

    public String getValue() {      //현재 노드의 데이터를 반환
      return value;
    }

    public ArrayList<tree> getChildrenNode() {
      return children;
    }
  }
}