タスクは、指定されたバイナリ ツリーの左ノードを出力することです。まず、ユーザーはデータを挿入してバイナリ ツリーを生成し、結果のツリーの左側のビューを印刷します。
各ノードは最大 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言語でバイナリツリーの左図を印刷の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。