이진 트리의 중위 순회를 포함하는 배열 arr[]이 제공됩니다. 목표는 해당 배열에서 특수 이진 트리를 구성하는 것입니다. 특수 이진 트리는 루트 노드의 가중치가 왼쪽 및 오른쪽 자식의 가중치보다 큰 것입니다. 예를 들어 입력 int arr[] = {10, 20, 28, 40, 32, 31, 30} 출력 주어진 inordertraversal로 생성될 특별한 이진 트리는 다음과 같습니다 - 설명 we are given with an array of integer values or the inorder traversal of
입력으로 바이너리 트리가 제공됩니다. 목표는 내부에 하위 트리로 존재하는 이진 탐색 트리(BST)의 수를 찾는 것입니다. BST는 왼쪽 자식이 루트보다 작고 오른쪽 자식이 루트보다 큰 이진 트리입니다. 예를 들어 입력 값을 입력한 후 생성될 트리는 다음과 같습니다. - 출력 Count the Number of Binary Search Trees present in a Binary Tree are: 2 설명 우리는 이진 트리를 형성하는 데 사용되는 정수 값의 배열이 제공되며 그 안에 이진 검색 트리가 있는지 여부를 확인할
두 개의 순회 먼저 원래 배열과 배열에서 검색 및 삭제할 요소를 정의하겠습니다 - int ele = 5; int arr = [1,2,3,4]; 이제 우리는 주어진 요소를 찾기 위해 배열을 반복합니다 - for (i=0; i<length; i++) if (arr[i] == ele) break; 주어진 요소 위치가 발견되면 발견된 요소에 대해 오른쪽에 있는 요소를 왼쪽으로 이동합니다 - if (i < length) { length--;
먼저 원래 배열과 배열 요소의 삭제를 위한 배타적 범위를 정의하고 원래 배열 길이도 구해 보겠습니다 - int arr[] = { 2,4,6,8,10,12,14,16,18,20}; int L = 2, R = 6; int length = sizeof(arr) / sizeof(arr[0]); 이제 배열을 반복하고 인덱스 위치(i)가 L 또는 R보다 크면 인덱스 값(i)이 범위 L과 범위 사이에 있으면 배열 요소의 위치를 이동(삭제)하는 데 사용할 변수 k를 증가시킵니다. R. 또한 주어진 배열의 새로운 길이는 k가 됩니다. int
먼저 데이터와 왼쪽 및 오른쪽 노드 자식을 포함하는 트리 노드를 나타내는 구조체를 정의하겠습니다. 이것이 생성될 첫 번째 노드이면 루트 노드이고 그렇지 않으면 자식 노드입니다. struct Node { int data; struct Node *leftChild, *rightChild; }; 다음으로 int 값을 취하여 노드의 데이터 멤버에 할당하는 newNode(int 데이터) 함수를 만듭니다. 함수는 생성된 구조체 노드에 대한 포인터를 반환합니다. 또한 새로 생성된 노드의 왼쪽과 오
먼저 데이터와 왼쪽 및 오른쪽 노드 자식을 포함하는 트리 노드를 나타내는 구조체를 정의하겠습니다. 이것이 생성될 첫 번째 노드이면 루트 노드이고 그렇지 않으면 자식 노드입니다. struct Node { int data; struct Node *leftChild, *rightChild; }; 다음으로 int 값을 취하여 노드의 데이터 멤버에 할당하는 newNode(int 데이터) 함수를 만듭니다. 함수는 생성된 구조체 노드에 대한 포인터를 반환합니다. 또한 새로 생성된 노드의 왼쪽과 오
데이터와 다음 노드에 대한 포인터를 포함하는 연결 목록을 먼저 정의합시다. struct Node { int data; struct Node* next; }; 다음으로 int 데이터를 매개변수로 사용하고 매개변수 값을 할당한 후 새로 생성된 노드를 반환하는 createNode(int data) 함수를 만듭니다. 노드에 대한 다음 포인터는 null이 됩니다. Node* createNode(int data){ struct Node* newNode = new Node;
데이터와 다음 노드에 대한 포인터를 포함하는 연결 목록을 먼저 정의합시다. struct Node { int data; struct Node* next; }; 그런 다음 Node와 int 값에 대한 doublePointer를 사용하는 createList(Node ** headPtr, int new_data) 함수를 만듭니다. 함수 내에서 새로 생성된 노드 다음 포인터를 headptr에 할당한 다음 headptr을 새로 생성된 노드에 할당합니다. void createList(Node **
먼저 int 데이터, btree_node * rightChild, btree_node * leftChild를 포함하는 클래스를 사용하여 이진 트리를 정의하겠습니다. leftChild 및 rightChild는 btree_node에 대한 포인터입니다. 우리 반의 모든 구성원은 공개되어 있습니다. class btree_node { public: int data; btree_node* leftChild;
먼저 초기 문자열을 선언하고 길이를 계산하여 deleteSubstr(str,length) 함수에 전달하겠습니다. string str = "01010110011"; int length = str.length(); cout <<"Count of substring deletion"<< deleteSubstr(str, length); deleteSubstr(string str, int length) 함수 내부에서 for 루프는 I가 길이보다 작아질 때까지 실행되고 각각 0과 1이
데모 숫자는 숫자가 10자리 미만인 경우 형식 11..1의 숫자의 제곱으로 생성되는 회문 숫자입니다. 먼저 문자열 변수를 선언합시다 - string demNum = "1111"; string square = ""; 이제 demNum 문자열의 길이까지 반복합니다. 루프 내에서 인덱스 값을 변환합니다. i 문자열로 변환하고 정사각형 변수에 추가합니다. for(int i=1 ;i<=demNum.length();i++){ square += char(i+'0'
대각선의 길이를 찾기 위해 측면 값을 2*side*sin(900/14)에 넣습니다. 죄값(900/14) =0.9. 예시 측면에서 정7각형 대각선을 얻기 위해 다음 구현을 살펴보겠습니다. - #include <iostream> using namespace std; int main(){ float side = 12; if (side < 0) return -1; float diagonal = 2*side*0.9;
삭제 모드를 최하단 우측 노드로 교체하여 삭제를 수행합니다. 먼저 데이터와 왼쪽 및 오른쪽 노드 자식을 포함하는 트리 노드를 나타내는 구조체를 정의하겠습니다. 이것이 생성될 첫 번째 노드이면 루트 노드이고 그렇지 않으면 자식 노드입니다. struct Node { int data; struct Node *leftChild, *rightChild; }; 다음으로 int 값을 취하여 노드의 데이터 멤버에 할당하는 newNode(int 데이터) 함수를 만듭니다. 함수는 생성된 구조체 노드에
이진 트리의 밀도는 크기를 높이로 나누어 계산합니다. 이진 트리 밀도 =크기/높이 먼저 데이터와 왼쪽 및 오른쪽 노드 자식을 포함하는 트리 노드를 나타내는 구조체를 정의하겠습니다. 이것이 생성될 첫 번째 노드이면 루트 노드이고 그렇지 않으면 자식 노드입니다. struct Node { int data; struct Node *leftChild, *rightChild; }; 다음으로 int 값을 취하여 노드의 데이터 멤버에 할당하는 createNode(int 데이터) 함수를 만듭니다.
먼저 문자 키와 Node *의 벡터를 포함하는 트리 노드를 나타내는 구조체를 정의하겠습니다. struct Node{ char key; vector<Node *> children; }; 다음으로 int 키 값을 받아 노드의 키 멤버에 할당하는 createNode(int key) 함수를 만듭니다. 함수는 생성된 구조체 노드에 대한 포인터를 반환합니다. Node *createNode(int key){ Node *node = new Node; &
먼저 int 키와 왼쪽 및 오른쪽 노드 자식을 포함하는 트리 노드를 나타내는 구조체를 정의하겠습니다. 이것이 생성될 첫 번째 노드이면 루트 노드이고 그렇지 않으면 자식 노드입니다. struct Node { int data; struct Node *leftChild, *rightChild; }; 다음으로 int 키 값을 받아 노드의 키 멤버에 할당하는 createNode(int key) 함수를 만듭니다. 함수는 생성된 구조체 노드에 대한 포인터를 반환합니다. 또한 새로 생성된 노드의 왼
해당 위치로 거듭제곱된 숫자의 합이 숫자 자체와 동일한 숫자를 디사륨 숫자라고 합니다. noOfDigits(int num) 함수는 숫자를 받아 한 자리만 남아 있는 동안 계속해서 숫자를 10으로 나누어 자릿수를 반환합니다. 각 반복에서 숫자 변수는 숫자 추적을 유지하기 위해 증가하고 while 루프가 끝나면 반환됩니다. int noOfDigits(int num){ int digits = 0; int temp = num; while (temp){ &n
행렬의 행렬식은 첫 번째 행 보조 인자에 해당 보조 인자의 행렬식을 곱하고 이를 대체 부호로 추가하여 최종 결과를 얻음으로써 정방형 행렬에 대해서만 계산할 수 있습니다. $$A =\begin{bmatrix}a &b &c\\d &e &f \\g &h &i \\ \end{bmatrix}|A| =a(ei-fh)-b(di-gf)+c(dh-eg)$$ 먼저 행렬과 행렬의 차원 값을 취하는 determinantOfMatrix(int mat[N][N], int 차원) 함수가 있습니다. 행렬이 1차원이면 [0][0] 행렬 값을 반환합니다.
목적은 주어진 두 끝점(x1,y1)과 (x2,y2)를 통과하는 선의 사각형 수를 결정하는 것입니다. 우리의 선이 통과하는 제곱의 수를 찾으려면 다음을 찾아야 합니다. x 점 간의 차이(dx) =x2-x1, y 점 간의 차이(dy) =y2-y1, dx와 dy를 더하고 빼기 그들의 gcd(결과) =dx + dy – gcd(dx,dy). unitSquares(int x1, int y1, int x2, int y2) 함수는 4개의 값 x1,y1 및 x2,y2를 사용합니다. x2와 x1 사이의 절대 차이와 y2와 y1 사이의 절대 차이가
N 면 다각형에서 두 아이가 A와 B 정점에 서 있다면 우리는 다른 사람이 서 있어야 하는 정점 번호를 결정해야 그 사람이 A와 B에 모두 도달하는 데 필요한 최소 점프 횟수가 있어야 합니다. 여기서 주목해야 할 두 가지 조건은 다각형 꼭짓점에 시계 방향으로 번호가 매겨져 있고 답이 여러 개인 경우에 대비하여 항상 번호가 가장 적은 꼭짓점을 선택한다는 것입니다. vertexPosition(int 측, int vertexA, int vertexB)은 아니오를 취합니다. 다각형의 변의 수와 꼭짓점 A와 B의 위치. for 루프는 1