>  기사  >  백엔드 개발  >  C 언어에서는 주어진 레벨의 리프 노드를 인쇄합니다.

C 언어에서는 주어진 레벨의 리프 노드를 인쇄합니다.

王林
王林앞으로
2023-08-25 14:17:121045검색

이 작업에는 사용자가 지정한 주어진 레벨 k에서 이진 트리의 리프 노드를 인쇄하는 작업이 포함됩니다.

리프 노드는 왼쪽 및 오른쪽 포인터가 NULL인 끝 노드입니다. 이는 특정 노드가 상위 노드가 아님을 의미합니다.

예제

의 중국어 번역은 다음과 같습니다.

Example

Input : 11 22 33 66 44 88 77
Output : 88 77

C 언어에서는 주어진 레벨의 리프 노드를 인쇄합니다.

여기서 k는 인쇄해야 하는 트리의 레벨을 나타냅니다. 여기서 사용되는 방법은 각 노드를 반복하면서 노드에 포인터가 있는지 확인하는 것입니다. 왼쪽, 오른쪽 또는 둘 다를 나타내는 포인터가 하나만 있는 경우에도 해당 특정 노드는 리프 노드가 될 수 없습니다.

계층적 순회 기술을 사용하여 각 노드를 왼쪽에서 시작하여 루트 노드, 마지막으로 오른쪽으로 재귀적으로 순회합니다.

아래 코드는 주어진 알고리즘의 C 언어 구현을 보여줍니다.

알고리즘

START
   Step 1 -> create node variable of type structure
      Declare int data
      Declare pointer of type node using *left, *right
   Step 2 -> create function for inserting node with parameter as new_data
      Declare temp variable of node using malloc
      Set temp->data = new_data
      Set temp->left = temp->right = NULL
      return temp
   Step 3 -> declare Function void leaf(struct node* root, int level)
      IF root = NULL
         Exit
      End
      IF level = 1
         IF root->left == NULL && root->right == NULL
            Print root->data
         End
      End
      ELSE IF level>1
         Call leaf(root->left, level - 1)
         Call leaf(root->right, level - 1)
      End
   Step 4-> In main()
      Set level = 4
      Call New passing value user want to insert as struct node* root = New(1)
      Call leaf(root,level)
STOP

Example

의 중국어 번역은 다음과 같습니다.

Example

include<stdio.h>
#include<stdlib.h>
//structre of a node defined
struct node {
   struct node* left;
   struct node* right;
   int data;
};
//structure to create a new node
struct node* New(int data) {
   struct node* temp = (struct node*)malloc(sizeof(struct node));
   temp->data = data;
   temp->left = NULL;
   temp->right = NULL;
   return temp;
}
//function to found leaf node
void leaf(struct node* root, int level) {
   if (root == NULL)
      return;
   if (level == 1) {
      if (root->left == NULL && root->right == NULL)
      printf("%d</p><p>",root->data);
   } else if (level > 1) {
      leaf(root->left, level - 1);
      leaf(root->right, level - 1);
   }
}
int main() {
   printf("leaf nodes are: ");
   struct node* root = New(11);
   root->left = New(22);
   root->right = New(33);
   root->left->left = New(66);
   root->right->right = New(44);
   root->left->left->left = New(88);
   root->left->left->right = New(77);
   int level = 4;
   leaf(root, level);
   return 0;
}

Output

위 프로그램을 실행하면 다음과 같은 출력이 생성됩니다.

rreee

위 내용은 C 언어에서는 주어진 레벨의 리프 노드를 인쇄합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제