用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
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP