二叉树中求位于先序序列中第k个位置的结点的值
编写递归算法,在二叉树中求位于先序序列中
第k个位置的结点的值。
要求实现下列函数:
TElemType PreOrder(BiTree bt, int k);
/* bt is the root node of a binary linked list, */
/* Preorder travel it and find the node whose */
/* position number is k, and return its value. */
/* if can't found it, then return '#'. */
二叉链表类型定义:
typedef struct BiTNode {
TElemType data;
BiTNode *lchild, *rchild;
} BiTNode, *BiTree;
[解决办法]
else { k=k-1; if(bt->lchild) { PreOrder(bt->lchild,k); } else if(bt->rchild) { PreOrder(bt->rchild,k); } } 改成 else { if(bt->lchild) { PreOrder(bt->lchild,k-1); } else if(bt->rchild) { PreOrder(bt->rchild,k-1); } } 试试看
[解决办法]
把你的建树代码也发上来吧
[解决办法]
if(bt->lchild)
{
PreOrder(bt->lchild,k);
}
if(bt->rchild)
{
PreOrder(bt->rchild,k);
}
[解决办法]
k=k-1;
if(bt->lchild)
{
PreOrder(bt->lchild,k);
}
else if(bt->rchild)
{
PreOrder(bt->rchild,k);
}
换成
m=k-1; //m为全局变量
if(bt->lchild)
{
PreOrder(bt->lchild,m);
}
else if(bt->rchild)
{
PreOrder(bt->rchild,m);
}
试试看
[解决办法]
改成:else { if(bt->lchild) { PreOrder(bt->lchild,k-1); } if(bt->rchild) //此处不要else { PreOrder(bt->rchild,k-1); } }
[解决办法]
上面的好像还有点问题,再参照5楼的
k=k-1;
if(bt->lchild)
{
PreOrder(bt->lchild,k);
}
else if(bt->rchild)
{
PreOrder(bt->rchild,k);
}
改为
m=k-1; //m为全局变量
if(bt->lchild)
{
PreOrder(bt->lchild,m);
}
if(bt->rchild)
{
PreOrder(bt->rchild,m);
}