C++二叉树找到对应的节点
时间: 2023-07-11 15:28:38 浏览: 160
要找到一个二叉树中对应值的节点,可以使用递归的方式进行查找。具体步骤如下:
1. 判断当前节点是否为空,若为空,则返回空指针。
2. 判断当前节点的值是否等于目标值,若相等,则返回当前节点。
3. 若目标值小于当前节点的值,则在当前节点的左子树中查找目标节点。
4. 若目标值大于当前节点的值,则在当前节点的右子树中查找目标节点。
C++代码如下:
```c++
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};
TreeNode* searchBST(TreeNode* root, int val) {
if (root == nullptr) {
return nullptr;
}
if (root->val == val) {
return root;
}
if (val < root->val) {
return searchBST(root->left, val);
} else {
return searchBST(root->right, val);
}
}
```
调用示例:
```c++
int main() {
TreeNode* root = new TreeNode(4);
root->left = new TreeNode(2);
root->right = new TreeNode(7);
root->left->left = new TreeNode(1);
root->left->right = new TreeNode(3);
int val = 2;
TreeNode* target = searchBST(root, val);
if (target == nullptr) {
cout << "Not found" << endl;
} else {
cout << "Found: " << target->val << endl;
}
return 0;
}
```
输出结果:
```
Found: 2
```
阅读全文