이진 트리가 주어지면 프로그램은 트리의 홀수 레벨에 있는 노드를 인쇄해야 하고 이진 트리의 레벨은 1에서 n까지 시작해야 합니다.
언급된 것이 없으므로 재귀 또는 반복과 같은 두 가지 접근 방식 중 하나를 구현할 수 있습니다.
재귀적 접근 방식을 사용하고 있기 때문에 프로그램은 홀수 레벨의 노드를 가져와 반환하는 함수를 재귀적으로 호출합니다.
위의 이진 트리에서 -
Nodes at level 1: 10 Nodes at level 2: 3 and 211 Nodes at level 3: 140, 162, 100 and 146
따라서 수준 1과 수준 3의 노드가 인쇄되며 출력은 10, 140, 162, 100 및 146이 됩니다.
알고리즘
START Step 1 -> create a structure of a node as struct Node struct node *left, *right int data End Step 2 -> function to create a node node* newnode(int data) node->data = data node->left = node->right = NULL; return (node) step 3 -> create function for finding the odd nodes void odd(Node *root, bool ifodd = true) IF root = NULL Return End if (ifodd) print root->data End odd(root->left, !ifodd) odd(root->right, !ifodd) step 4 -> In main() Create tree using Node* root = newnode(45) root->left = newnode(23) Call odd(root) Stop
예시
#include <bits/stdc++.h> using namespace std; struct Node{ int data; Node* left, *right; }; void odd(Node *root, bool ifodd = true){ if (root == NULL) return; if (ifodd) cout << root->data << " " ; odd(root->left, !ifodd); odd(root->right, !ifodd); } // function to create a new node Node* newnode(int data){ Node* node = new Node; node->data = data; node->left = node->right = NULL; return (node); } int main(){ Node* root = newnode(45); root->left = newnode(23); root->right = newnode(13); root->left->left = newnode(24); root->left->right = newnode(85); cout<<"\nodd nodes are "; odd(root); return 0; }
출력
위의 프로그램을 실행하면 다음 출력이 생성됩니다.
odd nodes are 45 24 85