📅  最后修改于: 2023-12-03 14:58:32.805000             🧑  作者: Mango
本题是GATE-IT-2004考试的一道题目,考察了二叉树的遍历和搜索操作。该题需要实现二叉树的搜索操作,并返回指定数据的父节点。对于没有父节点的情况,需要返回-1。
输入数据为一系列整数,以-1为结束标志。输入的整数会组成二叉树,其中第一个整数为根节点。
函数需要返回指定数据的父节点,如果没有父节点,需要返回-1。
本题中需要实现二叉树的搜索操作。可以使用递归的方式实现,对于当前节点,首先判断是否匹配,如果匹配则返回当前节点,否则递归搜索左右子树。如果当前节点的左右子树均没有匹配的数据,则说明该数据不在该树中,需要返回-1。
struct TreeNode {
int value;
TreeNode *left;
TreeNode *right;
};
int findParent(TreeNode *root, int target) {
if (root == nullptr) {
return -1;
}
if (root->left != nullptr && root->left->value == target) {
return root->value;
}
if (root->right != nullptr && root->right->value == target) {
return root->value;
}
int leftResult = findParent(root->left, target);
if (leftResult != -1) {
return leftResult;
}
int rightResult = findParent(root->right, target);
if (rightResult != -1) {
return rightResult;
}
return -1;
}
本题考察了二叉树的搜索操作,需要实现一个递归算法实现。除了该题之外,在实际的开发过程中,二叉树的搜索操作也经常会被用到,例如在数据库索引的实现中。因此,熟练掌握二叉树的基本操作至关重要。