如何优雅地从大到小输出二叉排序树最大的k个数|树

RT,从小到大输出我们都知道——中序遍历,但是如何从大到小呢?我首先想到用一个辅助栈来帮忙,中序遍历输入到栈,再出来就是从大到小,但是有一种更牛逼的思路,中序遍历的时候颠倒左右子树的遍历顺序,是不是豁然开朗的感觉?

void MidOrderReverse(BiTree tree)
{
    if (tree!=NULL)
    {
        MidOrderReverse(tree->rchild);
        printf("%d",tree->data);
        MidOrderReverse(tree->lchild);
    }    
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 树的概述 树是一种非常常用的数据结构,树与前面介绍的线性表,栈,队列等线性结构不同,树是一种非线性结构 1.树的定...
    Jack921阅读 4,528评论 1 31
  • 一直以来,我都很少使用也避免使用到树和图,总觉得它们神秘而又复杂,但是树在一些运算和查找中也不可避免的要使用到,那...
    24K男阅读 6,796评论 5 14
  • 数据结构和算法--二叉树的实现 几种二叉树 1、二叉树 和普通的树相比,二叉树有如下特点: 每个结点最多只有两棵子...
    sunhaiyu阅读 6,583评论 0 14
  • 二叉树的三种常用遍历方式 学习过数据结构的同学都清楚,除了层序遍历外,二叉树主要有三种遍历方式: 1. 先序遍历...
    SherlockBlaze阅读 1,260评论 0 4
  • 二叉树的遍历想必大家都不陌生,主要有三种遍历方式:前序遍历(pre-order traversal),中序遍历(i...
    akak18183阅读 1,171评论 0 1