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

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

WBOY
풀어 주다: 2023-09-03 13:25:05
앞으로
1445명이 탐색했습니다.

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

각 노드는 최대 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으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿