목록탐색 (3)
헬창 개발자
설계도 오른쪽 회전의 알고리즘 루트 노드 n에서 불균형이 발견된다면, n.left를 x로 선언하고 n.left를 x.right로 만들어줘 연결을 끊는다. x.right에 n을 연결해줘 서브트리로 갱신한다. 왼쪽 회전은 방향만 바꿔주면 된다. 코드 class Node: def __init__(self, key, height, left=None, right=None): self.key = key self.height = height self.left = left self.right = right class AVL: def __init__(self): self.root = None def height(self, n): if n == None: return 0 return n.height def put(self..
https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 문제 그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 프로그램을 작성하시오. 단, 방문할 수 있는 정점이 여러 개인 경우에는 정점 번호가 작은 것을 먼저 방문하고, 더 이상 방문할 수 있는 점이 없는 경우 종료한다. 정점 번호는 1번부터 N번까지이다. 입력 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 1..
#include typedef struct NodeList { //노드 리스트 구조체 struct NodeList* link; // 링크: 이전 노드를 가리킴 int data; // 데이터: 데이터를 저장 }Node; int search(Node* head, int a) { //노드 검색 함수 int cnt = 0; // 카운터값 Node* search; // 구조체 포인터 생성 search = head; // search는 첫노드를 가리킴 while (search != NULL) // 머리 노드가 가리키는 링크값이 NULL이 아니면 실행 { if (search->data == a) { // 머리 노드가 가리키는 데이터값이 일치하면 실행 cnt++; // 카운터 증가 } search = search->l..