求二叉树某结点的双亲,如果找到,打印双亲结点的值,如果无双亲,打印“no parent”,的完整代码,用c++
时间: 2024-05-03 17:19:31 浏览: 60
输出二叉树中某结点的双亲结点
5星 · 资源好评率100%
以下是二叉树某结点的双亲的完整代码,用C++实现。
```cpp
#include <iostream>
using namespace std;
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
// 寻找某结点的双亲
void findParent(TreeNode* root, TreeNode* node) {
if (root == NULL || root == node) {
cout << "no parent" << endl; // 根节点或者无双亲
return;
}
if (root->left == node || root->right == node) {
cout << root->val << endl; // 找到双亲
return;
}
findParent(root->left, node);
findParent(root->right, node);
}
int main() {
// 构造二叉树
TreeNode *root = new TreeNode(1);
TreeNode *node1 = new TreeNode(2);
TreeNode *node2 = new TreeNode(3);
TreeNode *node3 = new TreeNode(4);
TreeNode *node4 = new TreeNode(5);
root->left = node1;
root->right = node2;
node1->left = node3;
node1->right = node4;
findParent(root, node1); // 1
findParent(root, node2); // 1
findParent(root, node3); // 2
findParent(root, node4); // 2
findParent(root, root); // no parent
return 0;
}
```
注:以上代码中使用了递归,时间复杂度是O(n),其中n是二叉树的结点数。
阅读全文