概述
/*********
第一种
*********/
/**********
【题目】编写递归算法,求对二叉树T先序遍历时
第k个访问的结点的值。
二叉链表类型定义:
typedef struct BiTNode {
TElemType data;
struct BiTNode *lchild, *rchild;
} BiTNode, *BiTree;
**********/
int countNodes(BiTree bt){
return bt?(1 + countNodes(bt->lchild)+countNodes(bt->rchild)):0;
}
TElemType PreOrderK(BiTree T, int k)
/* 求对二叉树T先序遍历时第k个访问的结点的值。*/
/* 若失败,则返回'#' */
{
int count;
if(k <= 0 || !T) return '#';
if(k==1) return T->data;
count = countNodes(T->lchild);
return count >= --k ? PreOrderK(T->lchild,k) : PreOrderK(T->rchild,k-count);
}
/*********
第二种
*********/
/**********
【题目】编写递归算法,求对二叉树T先序遍历时
第k个访问的结点的值。
二叉链表类型定义:
typedef struct BiTNode {
TElemType data;
struct BiTNode *lchild, *rchild;
} BiTNode, *BiTree;
**********/
TElemType PreOrder(BiTree T, int &rek){
TElemType re = '#';
if(T == NULL)return '#';
if(rek == 1){
return T -> data;
}
rek--;
if(T -> lchild)
re = PreOrder(T -> lchild, rek);
if(T -> rchild && re == '#')
re = PreOrder(T -> rchild, rek);
return re;
}
TElemType PreOrderK(BiTree T, int k)
/* 求对二叉树T先序遍历时第k个访问的结点的值。*/
/* 若失败,则返回'#' */
{
int rek = k;
return PreOrder(T , rek);
}
最后
以上就是沉静小丸子为你收集整理的二叉树T先序遍历时,第k个访问的结点的值。(有两种解法)的全部内容,希望文章能够帮你解决二叉树T先序遍历时,第k个访问的结点的值。(有两种解法)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复