Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

พิมพ์โหนดที่ระดับคี่ (Odd Levels) ของต้นไม้ใน C++

กำหนด Binary Tree โปรแกรมต้องพิมพ์โหนดที่อยู่ในระดับคี่ (odd levels) ของต้นไม้ โดยระดับของ Binary Tree เริ่มจาก 1 ถึง n

เนื่องจากไม่ได้ระบุวิธีการ สามารถใช้ได้ทั้ง Recursion และ Iteration

เนื่องจากเราใช้แนวทาง Recursive โปรแกรมจะเรียกฟังก์ชันแบบ Recursive ที่จะดึงโหนดในระดับคี่และส่งคืน

พิมพ์โหนดที่ระดับคี่ (Odd Levels) ของต้นไม้ใน C++

ใน 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