Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

In các nút ở cấp độ lẻ của cây trong C++


Cho cây nhị phân, chương trình in các nút ở cấp độ lẻ (cấp độ bắt đầu từ 1).

Có thể dùng đệ quy hoặc lặp. Ở đây dùng đệ quy: gọi hàm đệ quy lấy nút ở cấp độ lẻ và trả về.

In các nút ở cấp độ lẻ của cây trong C++

Trong cây nhị phân trên:

Cấp 1: 10 
Cấp 2: 3 và 211 
Cấp 3: 140, 162, 100, 146

Nút ở cấp 1 và 3 sẽ được in: 10, 140, 162, 100, 146.

Thuật toán

BẮT ĐẦU
BƯỚC 1: CẤU TRÚC NÚT: struct Node { Node *left, *right; int data; }
BƯỚC 2: HÀM TẠO NÚT newnode(int data)
BƯỚC 3: HÀM TÌM NÚT LẺ odd(Node *root, bool ifodd = true)
    NẾU root == NULL TRẢ VỀ
    NẾU ifodd IN root->data
    odd(root->left, !ifodd)
    odd(root->right, !ifodd)
BƯỚC 4: TRONG main(): TẠO CÂY, GỌI odd(root)
KẾT THÚC

Ví dụ mã C++

#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 << "\nCác nút ở cấp lẻ: "; 
    odd(root); 
    return 0; 
}

Kết quả

Chạy chương trình cho kết quả:

Các nút ở cấp lẻ: 45 24 85