考研数据结构(每日一题)
题目:已知一棵二叉树链式存储,设计一个算法,输出根结点到每个叶子结点的路径。
算法思想:
遍历(先序遍历)
对特殊的结点(叶子结点)进行处理
需要借助一个栈
完整代码:
Elemtype stack[maxsize];
void path(BTNode *p){
int i = 0,top = 0;
if (p != NULL) //不为空,则结点值入栈
{
stack[top] = p -> data;
++ top;
}
if (p -> lchild == NULL && p -> rchild == NULL) //如果是叶子结点
{
for (i = 0; i < top; ++i) //读出栈中元素
{
printf(%c,stack[i]);
}
path(p -> lchild); //遍历二叉树
path(p -> rchild);
-- top;
}
}