这是学习材料,没有家庭作业:递归树,印刷祖先节点
我有以下的树,我需要编写查找给定数,并返回一个整数,表示它找到之前多少节点访问的算法它。还应该打印所有“祖先”的值的节点相对于在其中该值被找到的节点(没有特定的顺序,并且,假定给定的值始终是存在的)
10
/\
20 60
/\
50 30
\
40
如果给定的值是40它应该返回4并打印30,20,10(以任何顺序)
我写了以下解决方案,我认为它的工作原理,但我很关心打印。
void foobar (ty_tree *tree, int value, int & count){
if (tree !=null) {
if (tree->value != value) {
count++;
foobar (tree->left, value, count);
foobar (tree->right, value, count);
cout << tree->value;
}
}
}
由于您正在递归执行此操作,因此只有在您从查找目标时开始下降时才打印该节点的值。 – e0k