【数据结构】-树-求先序遍历中第k个结点的值

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 20:56   2454   0

【算法思路】

采用递归先序遍历,设置计数器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 # #
}

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP