dfs 3

[leetcode - Java / DFS] 133. Clone Graph

1. 문제 - 이웃 노드가 담긴 리스트, 그래프의 전체 복사본을 반환 2. 의사코드 1. 복사본을 저장하기 위한 Hash private HashMap map = new HashMap(); 2. 현재 노드 복사본 생성 Node newNode = new Node(node.val, new ArrayList()); 3. map에 현재 노드와 복사본 저장 map.put(node, newNode); 4. 반복문으로 복사본에 채우기 3. 시도 class Solution { private HashMap map = new HashMap(); public Node cloneGraph(Node node) { // 현재 노드가 null이거나 복사본에 현재 노드가 없을 때 if (node == null) { return nul..

자바 알고리즘 2023.09.15

[leetcode - BST / Java] 230. Kth Smallest Element in a BST

1. 문제 - 이진 검색 트리에서 k번째로 작은 값을 구해라 2. 의사코드 이번 문제도 이전에 풀었던 leetcode 530번 문제와 비슷했다. 재귀를 이용해 노드를 정렬하고 k번째 노드의 값을 출력하면 될 것 같았다. 530번 문제의 내용은 링크에서 https://rhdqors.tistory.com/107 확인 가능하다. 1. 변수 설정 (재귀, 정렬된 값 저장) Integer data = null; ArrayList lists = new ArrayList(); // 우선 List를 이용해 정렬된 값을 저장시켜 본다 2. 재귀함수, 값 정렬 public void 재귀(TreeNode node) { 재귀(node.left); // 왼쪽 하위 트리 탐색 data = node.val; // 각 노드의 값 l..

자바 알고리즘 2023.09.08

[leetcode - BST / Java] 530. Minimum Absolute Difference in BST

1. 문제 - 주어진 노드에서 Binary Search Tree를 사용하여 최솟값을 찾아라 2. 의사코드 Binary Search Tree에서 많이 사용하는 방법에는 크게 BFS, DFS 두 가지가 있다. BFS(Breadth-First Search) - 너비 우선 탐색 트리의 레벨별로 노드를 탐색하며 일반적으로 큐를 사용하여 구현한다. DFS(Depth-First Search) - 깊이 우선 탐색 In-Order Traversal (중위 순회): 왼쪽 하위 트리를 먼저 탐색하고 -> 현재노드 -> 오른쪽 하위 트리 순서로 탐색하며 오름차순 정렬이다. Pre-Order Traversal (전위 순회): 현재 노드 -> 왼쪽 하위 트리 -> 오른쪽 하위 트리를 탐색한다. Post-Order Traversa..

자바 알고리즘 2023.09.07