问题:打印二叉树的所有从根节点到叶子节点的路径。
思路:使用递归分别遍历左子树,然后遍历右子树,使用栈来存储路径上的每一个节点,到达叶子节点时候打印路径各个节点的data。然后,出栈,也就是回到上一层,继续遍历右子树。
void path3(Tree* root)
{
if(root == NULL)
{
return;
}
stack[top++] = root->data;
if(root->lch == NULL && root->rch == NULL)
{
for(int i = 0 ;i<top;i++)
{
printf("%c",stack[i]);
}
printf("\n");
return;
}
if(root->lch)
{
path3(root->lch);
top--;
}
if(root->rch)
{
path3(root->rch);
top--;
}