이 작업은 주어진 이진 트리의 왼쪽 노드를 인쇄하는 것입니다. 먼저 사용자는 데이터를 삽입하여 이진 트리를 생성한 다음 결과 트리의 왼쪽 보기를 인쇄합니다.
각 노드는 최대 2개의 하위 노드를 가질 수 있으므로 이 프로그램은 노드와 연결된 왼쪽 포인터만 반복해야 합니다.
왼쪽 포인터가 null이 아닌 경우 이는 연결된 일부 데이터 또는 포인터가 있음을 의미합니다. 그렇지 않으면 왼쪽 포인터가 됩니다. 자식이 인쇄되어 출력으로 표시됩니다.
Input : 1 0 3 2 4 Output : 1 0 2
여기에서 주황색 노드는 이진 트리의 왼쪽 보기를 나타냅니다.
주어진 그래프에서 데이터 1이 있는 노드는 루트 노드이므로 인쇄됩니다. 왼쪽 하위 노드로 이동하는 대신 0을 인쇄한 다음 3으로 이동하여 왼쪽 하위 노드를 인쇄합니다. 2입니다.
재귀적 방법을 사용하여 노드의 레벨을 저장하고
로 반복적으로 전송할 수 있습니다. 아래 코드는 주어진 알고리즘
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
#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; }
의 C 구현을 보여줍니다. 위 프로그램을 실행하면, 다음과 같은 출력이 생성됩니다.
rreee위 내용은 C 언어로 이진 트리의 왼쪽 보기 인쇄의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!