Với cây nhị phân, chương trình phải in các nút ở mức lẻ của cây và các mức của cây nhị phân bắt đầu từ 1 đến n.
Như không có gì được đề cập, một trong hai cách tiếp cận có thể được thực hiện, tức là đệ quy hoặc lặp lại.
Vì chúng ta đang sử dụng cách tiếp cận đệ quy, chương trình sẽ thực hiện một cuộc gọi đệ quy tới một hàm sẽ tìm nạp các nút ở các mức lẻ và trả về chúng.
Trong cây nhị phân ở trên -
Nodes at level 1: 10 Nodes at level 2: 3 and 211 Nodes at level 3: 140, 162, 100 and 146
Vì vậy, các nút ở mức 1 và mức 3 sẽ được in ra có nghĩa là đầu ra sẽ là 10, 140, 162, 100 và 146.
Thuật toán
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
Ví dụ
#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; }
Đầu ra
nếu chúng ta chạy chương trình trên thì nó sẽ tạo ra kết quả sau
odd nodes are 45 24 85