我是靠谱客的博主 沉静小丸子,这篇文章主要介绍二叉树T先序遍历时,第k个访问的结点的值。(有两种解法),现在分享给大家,希望可以做个参考。


/*********

第一种

*********/

/**********
【题目】编写递归算法,求对二叉树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个访问内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部