【算法思路】
采用递归先序遍历,设置计数器num,注意num必须是全局变量,第k次递归结束后,输出结点的值,并结束程序
【算法实现】
typdef struct BiTNode{
int data;
struct BiTNode*lchild;
struct BiTNode*rchild;
}BiTNode, *BiTree;
int num = 0;
void DLR_k(BiTree T,int k) {
if (T)
{
num++;
if (num == k)
{
cout << T->data;
return;
}
else
{
if (T->lchild) DLR_k(T->lchild,k);
if (T->rchild) DLR_k(T->rchild,k);
}
}
}
void moni1() {
BiTree T;
cout << "先序遍历创建二叉树" << endl;
DLR_DG_createTree(T);
int k = 0;
cout << "输入k:";
cin >> k;
DLR_k(T, k);
cout << endl;
cout << "递归先序遍历:";
DLR_DG_printTree(T);
//a b d # # # c # #
}
|