【发布时间】:2020-02-06 07:15:09
【问题描述】:
让 T 成为树
12
6 3
13
1 14
对于节点 (1),最小祖先是 6。对于节点 (3),最小祖先是 12。我正在尝试编写一个递归解决方案来返回节点的最小祖先。
int MinParent(struct Node *root, struct Node *target) {
if (root == NULL) {
return INT_MAX;
}
if (root->data == target->data) {
return INT_MAX;
}
int res = root->data;
if ((MinParent(root->left, target) == INT_MAX) || (MinParent(root->right, target) == INT_MAX)) {
int res = min(??);
return ??;
}
return res;
}
我能够到达给定目标节点的每个祖先节点,但我不知道如何获得这些节点的最小值。
【问题讨论】:
-
我会使用深度优先搜索。这样,当您找到所需的节点时,堆栈就会包含该节点的所有祖先。
-
孩子有指向父母的指针吗?
标签: c algorithm binary-tree