자료구조 & 알고리즘/이진트리

// 각각의 엣지에 가중치가 있는 포화 이진 트리가 있다. // 루트에서 각 리프까지의 경로 상 가중치 합을 각각 같게 하고, // 모든 가중치들의 총합이 최소가 되도록 하는 프로그램을 작성하세요. - 포인트 1. 엣지를 트리로 보기 - 포인트 2. 후위 순회하기.. - 포인트 3. 차이를 더해주기 ==> += Math.abs(x - y); - 포인트 4. 높이로 포화이진트리 담을 배열의 길이 구하기 --> 정답 풀이 케이스에서 활용 ==> Math.pow(2, h + 1); public class MyCode { // 후위 순회 --> 트리 문제 풀때 무슨 순회인지 먼저 파악하기 ! public static void solution(int h, int[] w) { // 후위 순회.. // 엣지를 노드..
class Node { char data; Node left; Node right; Node(char data, Node left, Node right) { this.data = data; this.left = left; this.right = right; } } class BinaryTree2 { Node head; BinaryTree2(char[] arr) { // 배열로 노드 구성한 후, 링크트 리스트 엮는 방식 -> 노드를 idx로 접근... Node[] nodeList = new Node[arr.length]; // 노드타입 배열 먼저 구성하기 !! for (int i = 0; i < nodeList.length; i++) { nodeList[i] = new Node(arr[i], null, n..
주어진 인덱스가 idx 일 때 ( 수정 필요..?) 부모 노드의 인덱스 : idx = (idx / 2) - 1; 왼쪽 자식 노드의 인덱스 : idx = idx * 2 + 1; 오른쪽 자식 노드의 인덱스 : idx = idx * 2 + 2; - 재귀적으로 호출하여 출력하는 구조 주의 ! - 전위 순회 : 먼저 출력 (preOrder) - 중위 순회 : 중간에 출력 (inOrder) - 후위 순회 : 마지막에 출력 (postOrder)class BinaryTree { char[] tree; BinaryTree(char[] arr) { tree = arr.clone(); } public void preOrder(int idx) { // 전위 순회 int left = idx * 2 + 1; int right =..
꾸준함의 미더덕
'자료구조 & 알고리즘/이진트리' 카테고리의 글 목록