>  기사  >  백엔드 개발  >  C 언어로 이진 트리의 왼쪽 보기 인쇄

C 언어로 이진 트리의 왼쪽 보기 인쇄

WBOY
WBOY앞으로
2023-09-03 13:25:051395검색

이 작업은 주어진 이진 트리의 왼쪽 노드를 인쇄하는 것입니다. 먼저 사용자는 데이터를 삽입하여 이진 트리를 생성한 다음 결과 트리의 왼쪽 보기를 인쇄합니다.

각 노드는 최대 2개의 하위 노드를 가질 수 있으므로 이 프로그램은 노드와 연결된 왼쪽 포인터만 반복해야 합니다.

왼쪽 포인터가 null이 아닌 경우 이는 연결된 일부 데이터 또는 포인터가 있음을 의미합니다. 그렇지 않으면 왼쪽 포인터가 됩니다. 자식이 인쇄되어 출력으로 표시됩니다.

Example
Input : 1 0 3 2 4
Output : 1 0 2

C 언어로 이진 트리의 왼쪽 보기 인쇄

여기에서 주황색 노드는 이진 트리의 왼쪽 보기를 나타냅니다.

주어진 그래프에서 데이터 1이 있는 노드는 루트 노드이므로 인쇄됩니다. 왼쪽 하위 노드로 이동하는 대신 0을 인쇄한 다음 3으로 이동하여 왼쪽 하위 노드를 인쇄합니다. 2입니다.

재귀적 방법을 사용하여 노드의 레벨을 저장하고

로 반복적으로 전송할 수 있습니다. 아래 코드는 주어진 알고리즘

algorithm

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 left_view(struct node* root, int level, int* highest_level)
      IF root = NULL
         Exit
      End
      IF *highest_level < level
         Print root->data
         Set *highest_level = level
      End
      Recursively call left_view(root->left, level + 1, highest_level)
      Recursively call left_view(root->right, level + 1, highest_level)
   Step 4 -> Declare Function void left(struct node* root)
      Set int highest_level = 0
      Call left_view(root, 1, &highest_level)
   Step 5-> In main()
      Call New passing value user want to insert as struct node* root = New(1)
      Call left(root)
STOP

Example

#include <stdio.h>
#include <stdlib.h>
//create a structure of a node
struct node {
   int data;
   struct node *left, *right; //this pointer will point to the nodes attached with a node
};
struct node* New(int new_data) {
   struct node* temp = (struct node*)malloc(sizeof(struct node));
   //allocating memory to a pointer    dynamically
   temp->data = new_data;
   temp->left = temp->right = NULL;
   return temp;
}
void left_view(struct node* root, int level, int* highest_level) {
   if (root == NULL) //if there is no node that means no data
   return;
   // this function will retrun the root node if there is only root node in a tree
   if (*highest_level < level) {
      printf("%d\t", root->data);
      *highest_level = level;
   }
   // Recursive function
   left_view(root->left, level + 1, highest_level);
   left_view(root->right, level + 1, highest_level);
}
void left(struct node* root) {
   int highest_level = 0;
   left_view(root, 1, &highest_level);
}
int main() {
   printf("left view of a binary tree is : ");
   struct node* root = New(1);
   root->left = New(0);
   root->right = New(3);
   root->right->left = New(2);
   root->right->right = New(4);
   left(root);
   return 0;
}

Output

의 C 구현을 보여줍니다. 위 프로그램을 실행하면, 다음과 같은 출력이 생성됩니다.

rreee

위 내용은 C 언어로 이진 트리의 왼쪽 보기 인쇄의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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