1.二叉链表的存储方式,求二叉树中值为x的层号
int L=1;
void leno(BTNode *p,int x)
{
if(p!=NULL)
{
if(p->data==x)
{
cout<<L<<endl;
break;
}
L++;
leno(p->lchild,x);
leno(p->rchild,x);
L--;
}
}
2.二叉链表输出根结点到每个叶子结点算法
int stack[maxsize];int top=-1;
void printAllPath(BTNode *p)
{
int i;
if(p!=NULL)
{
if(p->lchild==NULL&&p->rchild==NULL)
{
for(i=top;i>=0;i--)
cout<<p->data<<" ";
}
++top;
stack[top]=p->data;
printAllPath(p->lchild);
printAllPath(p->rchild);
--top;
}
}
3.假设二叉树采用二叉链表结构存储,设设计一个算法,输出该二叉树中第一条最长的路径长度,并输出此路径上个结点的值
int path[maxsize];int pathlen=-1;
int longpath[maxsize];int longpathlen=-1;
void printLongPath(BTNode *p)
{
int i;
if(p!=NULL)
{
if(pathlen>longpathlen)
{
for(i=pathlen-1;i>=0;i--)
longpath[i]=path[i];
longpathlen=pathlen;
}
++pathlen;
path[pathlen]=p->data;
printLongPath(p->lchild);
printLongPath(p->rchild);
--pathlen;
}
}
497



被折叠的 条评论
为什么被折叠?



