gpt4 book ai didi

c - 二叉树中的迭代加深深度优先搜索

转载 作者:太空宇宙 更新时间:2023-11-04 02:09:29 25 4
gpt4 key购买 nike

我有一个正常的二叉树,我正在尝试使用 c 应用迭代加深深度优先搜索:

struct node {
int data;
struct node * right;
struct node * left;
};

typedef struct node node;

我正在使用一个函数将节点插入树中,现在我需要将搜索函数实现为如下所示:函数搜索(root,goal,maxLevel)所以它使用深度优先搜索进行搜索,但达到特定的最大级别然后停止那是我的第一次尝试,它不起作用:

currentLevel = 0;
void search(node ** tree, int val, int depth)
{
if(currentLevel <= depth) {
currentLevel++;
if((*tree)->data == val)
{
printf("found , current level = %i , depth = %i", currentLevel,depth);

} else if((*tree)->left!= NULL && (*tree)->right!= NULL)
{
search(&(*tree)->left, val, depth);
search(&(*tree)->right, val, depth);
}
}
}

请帮忙,谢谢...

最佳答案

你永远不会停止......

node *search(node ** tree, int val, int depth)
{
if (depth <= 0)
{
return NULL; // not found
}

if((*tree)->data == val)
{
return *tree;
}

if((*tree)->left)
{
node * left = search(&(*tree)->left, val, depth - 1);
if (left) return left; // found
}
if((*tree)->right)
{
node * right = search(&(*tree)->left, val, depth - 1);
return right; // whatever is result of right
}
return NULL; // not found
}

关于c - 二叉树中的迭代加深深度优先搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16126017/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com