输出二叉树中第m层的第k个节点值

来源:互联网 发布:java enum getname 编辑:程序博客网 时间:2024/06/04 19:53

复习数据结构与算法看到个很有意思的题,题目是输出二叉树中第m层的第k个节点值,其中m和k均从0开始计数。

其实该题就是一道二叉树广度优先遍历的变形,其中再加上一点技巧就可以得到结果。

递归方法:

int Print(Node *root , int m , int *cnt){    if(!root || m < 0)        return 0;    if(m == 0)    {        if(*cnt == k)        {            printf("%c", root->chValue);            return 1;        }        *cnt += 1;        return 0;    }    return Print(root->lChild , m - 1 , cnt) || Print(root->rChild , m - 1 , cnt);}

非递归方法:用队列的方式做一广度优先,加上层数的统计即可,到m层输出第k个即可

0 0
原创粉丝点击