【问题描述】在二叉树中查找值为X的结点,返回查找成功与否的信息 【输入形式】AB##C## B 【输出形式】1 【样例输入】AB##C## D 【样例输出】0 用c++实现
时间: 2024-12-10 07:47:31 浏览: 20
在二叉树中查找值为X的节点,通常我们会采用递归的方式来实现。首先检查根节点是否就是我们要找的值,如果相等,则返回1表示找到;如果不等,我们根据节点的值是大于还是小于X来决定是在左子树还是右子树继续搜索。如果遍历完整棵树都没有找到,返回0表示未找到。
这是一个基本的C++函数示例:
```cpp
#include <iostream>
// 定义二叉树节点结构体
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
int searchInBinaryTree(TreeNode* root, int target) {
// 如果根节点为空或者等于目标值,返回结果
if (root == nullptr || root->val == target)
return root != nullptr; // 返回1表示找到,0表示未找到
// 分别递归查找左子树和右子树
return searchInBinaryTree(root->left, target) ||
searchInBinaryTree(root->right, target);
}
int main() {
// 样例输入:D
TreeNode* tree = new TreeNode(4); // 假设根节点为4
tree->left = new TreeNode(2);
tree->right = new TreeNode(6);
tree->left->left = new TreeNode(1);
tree->left->right = new TreeNode(3);
int target = 5; // 搜索的目标值
int result = searchInBinaryTree(tree, target);
std::cout << "Search result: " << (result ? "1" : "0") << std::endl;
return 0;
}
```
在这个例子中,`searchInBinaryTree`函数接收树的根节点和目标值作为参数,然后返回一个布尔值,表示查找的结果。在`main`函数中构建了一个简单的二叉树,并进行了搜索操作。
阅读全文