【发布时间】:2023-03-18 02:55:01
【问题描述】:
我需要打印一个二叉搜索树,它应该看起来像一棵树,这意味着如果我有一个 5、6、7 的树,打印函数将像 Example 1 一样打印它:
insert
5
insert
6
insert
7
Tree is:
5
6
7
现在假设一棵树是 4,3,7 结果应该是 Example 2:
insert
4
insert
3
insert
7
tree is:
4
3 7
有1个限制:它应该递归完成。
这是我尝试解决此问题的代码:
void PrintTabs(int n)
{
if(n==0)
{
return;
}
else
{
printf("\t");
PrintTabs(--n);
}
}
void PrintTree(BST* root, int level)
{
if (root==NULL)
{
return;
}
PrintTree(root->Right,++level);
PrintTabs(level);
printf("%d\n",*(int*)root->Value);
PrintTree(root->Left,++level);
}
我的两个主要问题是它总是向右滑动打印,所以我在两个递归调用之间移动了打印部分,这给了我一个糟糕的结果,但不知何故它有我寻找的树的格式
【问题讨论】:
-
我认为作为一名学生的想法是你自己做练习。你至少应该先尝试解决问题。
-
我尝试了几次,但我无法回溯原始根,我的意思是我在根之前打印叶子加上我无法正确形成它,相信我我尝试了几个小时,我最后的选择是在这里问这个问题。
-
好的 - 很好,你正在尝试它并且你已经缩小了你遇到的实际问题。这可以帮助人们快速解决您的问题。我建议您编辑问题并发布您的递归代码,也许人们可以看到您哪里出错了。但是,在我的脑海中,一旦您返回调用堆栈的后面,原始根将可用。
-
发布您的代码以进一步了解它
-
感谢您的快速回复,我是 StackOverFlow 的新手。很快我将发布我尝试编写的功能。
标签: c binary-tree binary-search-tree