【发布时间】:2016-04-16 02:14:58
【问题描述】:
我正在尝试遍历使用键盘输入数据构建的二叉树。数据成功插入二叉树。我有一个 switch 语句,其中“案例 4”应该逐级遍历(并打印)二叉树。但是我得到了 EXC_BAD_ACCESS 错误。如果有人帮我解决这个问题,我会非常高兴。
(RootPtr 是全局定义的二叉树的顶层 0- 节点;TreeDepth() 是计算树的“深度”的函数,其中 Depth 全局定义且根节点的深度为 0;GetNode 基本上是一个TreePtr 类型指针的初始化函数(使用 malloc)。)
提前谢谢大家。
以下是相关代码:
这是结构体定义;
typedef struct treeItem
{
int data;
struct treeItem *left;
struct treeItem *right;
}Tree , *TreePtr;
这是我逐级调用遍历函数的开关情况;
case 4:
TreePtr temp;
GetNode(&temp);
temp = RootPtr;
printLevelOrder(temp);
printf("\n\n");
break;
这些是用于逐级遍历树的函数;
void printGivenLevel(TreePtr TemPtr, int level)
{
if (items == 0)
return;
else
{ if(level == 0 )
{
printf(" %d", (*TemPtr).data); //the line I got ERROR
}
else
{
printGivenLevel((*TemPtr).left, (level-1));
printGivenLevel((*TemPtr).right, (level-1));
}
}
}
void printLevelOrder(TreePtr TemPtr)
{
TreeDepth();
if (items == 0)
printf("\nTree is empty.\n");
else
{
printf("Traverse level by level:");
for (int i=0; i<=Depth; i++)
{
printGivenLevel(TemPtr, i);
}
}
}
【问题讨论】:
-
超级忙,无法深入挖掘,但广度优先搜索在这里不起作用吗?
-
@kiss-o-matic 老实说,我是一个初学者,所以一开始我无法在脑海中想象“广度优先搜索”。但我会研究它。谢谢。
-
@BasakOguz en.wikipedia.org/wiki/Breadth-first_search
标签: c++ binary-tree tree-traversal