กำหนด Binary Tree โปรแกรมต้องพิมพ์โหนดที่อยู่ในระดับคี่ (odd levels) ของต้นไม้ โดยระดับของ Binary Tree เริ่มจาก 1 ถึง n
เนื่องจากไม่ได้ระบุวิธีการ สามารถใช้ได้ทั้ง Recursion และ Iteration
เนื่องจากเราใช้แนวทาง Recursive โปรแกรมจะเรียกฟังก์ชันแบบ Recursive ที่จะดึงโหนดในระดับคี่และส่งคืน

ใน Binary Tree ข้างต้น:
โหนดระดับ 1: 10 โหนดระดับ 2: 3 และ 211 โหนดระดับ 3: 140, 162, 100 และ 146
ดังนั้น โหนดในระดับ 1 และ 3 จะถูกพิมพ์ คือ 10, 140, 162, 100, 146
อัลกอริทึม
START
ขั้นตอนที่ 1: สร้างโครงสร้างโหนด struct Node { Node *left, *right; int data; }
ขั้นตอนที่ 2: ฟังก์ชันสร้างโหนด newnode(int data)
ขั้นตอนที่ 3: ฟังก์ชันหาโหนดระดับคี่ odd(Node *root, bool ifodd = true)
ถ้า root = NULL Return
ถ้า ifodd พิมพ์ root->data
odd(root->left, !ifodd)
odd(root->right, !ifodd)
ขั้นตอนที่ 4: ใน main() สร้างต้นไม้ เรียก 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);
}
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