写出C++代码
时间: 2023-07-11 07:17:33 浏览: 100
以下是使用递归方式实现求结点X在二叉树中的双亲结点算法的C++代码:
```c++
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
TreeNode* findParent(TreeNode* root, TreeNode* node) {
if (!root || root == node) {
return NULL;
}
if (root->left == node || root->right == node) {
return root;
}
TreeNode* left = findParent(root->left, node);
if (left) {
return left;
}
return findParent(root->right, node);
}
```
在上面的代码中,我们使用了TreeNode结构体表示二叉树的节点,其中包含节点的值、左右子树指针。函数findParent接收二叉树的根节点和要查找的节点作为参数,并返回查找的节点的双亲节点。在函数中,我们首先判断当前节点是否为空或者是否为要查找的节点,如果是,返回空指针NULL;然后判断当前节点的左右子树是否为要查找的节点,如果是,返回当前节点;否则,递归查找左子树和右子树,直到找到要查找的节点或者遍历完整个树为止。
阅读全文