用C++列印二叉搜尋樹的所有偶數節點
在這個問題中,我們得到一個二叉搜尋樹。我們的任務是列印二叉搜尋樹的所有偶數節點。
二叉搜尋樹是一個遵循以下條件的二叉樹:
左子樹總是包含比父節點值小的節點。
右子樹總是包含比父節點值大的節點。
所有節點都必須遵循上述兩條規則。
二叉搜尋樹示例:
讓我們舉個例子來理解這個問題:
輸出 - 2 4 6 8
為了解決這個問題,我們將遍歷二叉搜尋樹的所有節點並檢查當前節點的值。如果它是偶數,則列印該節點,否則忽略它。
示例
下面的程式碼將說明我們邏輯的工作原理:
#include <iostream> using namespace std; struct Node { int key; struct Node *left, *right; }; Node* newNode(int item){ Node* temp = new Node; temp->key = item; temp->left = temp->right = NULL; return temp; } Node* insertNode(Node* node, int key){ if (node == NULL) return newNode(key); if (key < node->key) node->left = insertNode(node->left, key); else node->right = insertNode(node->right, key); return node; } void printEvenNode(Node* root){ if (root != NULL) { printEvenNode(root->left); if (root->key % 2 == 0) cout<<root->key<<"\t"; printEvenNode(root->right); } } int main(){ Node* root = NULL; root = insertNode(root, 54); root = insertNode(root, 43); root = insertNode(root, 12); root = insertNode(root, 30); root = insertNode(root, 89); root = insertNode(root, 67); root = insertNode(root, 80); cout<<"All even nodes of the tree are :\n"; printEvenNode(root); return 0; }
輸出
樹的所有偶數節點是:
12 30 54 80
廣告