我是靠谱客的博主 沉静小丸子,最近开发中收集的这篇文章主要介绍二叉树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个访问的结点的值。(有两种解法)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部