二叉树两个结点的最近相同父节点怎么求,有什么算法
1个回答
展开全部
1. 面对这样的场景,选择父亲孩子结构的方式组建二叉树就很容易了。
2. 如果是普通的左右结点结构组建的二叉树,那就遍历吧。
int GetFather(TreeNode *root, TreeNode *a, TreeNode *b)
{
int num = 0;
if (root == NULL)
return 0;
else
{
num = GetFather(TreeNode->left, a, b) + GetFather(TreeNode->right, a, b);
if (num == 2)
{
printf("The father is %d", root->data);
return 0;
}
}
if (root == a || root == b)
return 1 + num;
else
return num;
}
2. 如果是普通的左右结点结构组建的二叉树,那就遍历吧。
int GetFather(TreeNode *root, TreeNode *a, TreeNode *b)
{
int num = 0;
if (root == NULL)
return 0;
else
{
num = GetFather(TreeNode->left, a, b) + GetFather(TreeNode->right, a, b);
if (num == 2)
{
printf("The father is %d", root->data);
return 0;
}
}
if (root == a || root == b)
return 1 + num;
else
return num;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询