这个题我见到过不止一次。笔试面试。

你拿个纸折一折会发现是这样的:

这棵树左子树是纸的下半部分,右子树是纸的上半部分。

下折痕指的是折痕突起的方向是纸的背面。

可以看出折痕是一棵满二叉树,根节点是下折痕,每一棵子树的左孩子是上折痕,每一棵子树的右孩子是下折痕。

从纸的上面到下面打印就是二叉树的RVL(右根左)的遍历。

对折N次就是指N层节点。

/*** 请把纸条竖着放在桌⼦上,然后从纸条的下边向上⽅对折,压出折痕后再展开。* 此时有1条折痕,突起的⽅向指向纸条的背⾯,这条折痕叫做“下”折痕 ;* 突起的⽅向指向纸条正⾯的折痕叫做“上”折痕。如果每次都从下边向上⽅ 对折,* 对折N次。请从上到下计算出所有折痕的⽅向。* 给定折的次数n,请返回从上到下的折痕的数组,若为下折痕则对应元素为"down",* 若为上折痕则为"up".* <p>* 从纸的上面到下面打印就是二叉树的RVL(右根左)的遍历。** @param n* @return*/
public static String[] foldPaper(int n) {List<String> result = new ArrayList<>();fold(1, n, "down", result);return result.toArray(new String[result.size()]);
}private static void fold(int level, int n, String type, List<String> result) {if (level <= n) {//Rfold(level + 1, n, "down", result);//Vresult.add(type);//Lfold(level + 1, n, "up", result);}
}

折纸的折痕(RVL中序遍历)相关推荐

  1. 微软面试题:打印折纸的折痕

    1.题目 请把一段纸条竖着放置在桌子上,然后从纸条的下边向上方对折1次,压出折痕后展开.此时折痕是凹下去的,即折痕突起的方向指向纸条的背面. 如果从纸条的下边向上方连续对折2次,压出折痕后展开,此时有 ...

  2. C++实现二叉树相关问题(先序遍历,中序遍历,后序遍历,层序遍历,搜索二叉树、平衡二叉树、满二叉树、完全二叉树的判断,最低公共祖先,二叉树的序列化和反序列化)

    目录 题目一 二叉树递归和非递归遍历 题目二 如何完成二叉树的宽度(也叫层序)遍历(常见题目:求一棵二叉树的宽度) 题目四 如何判断一棵二叉树是搜索二叉树(BST)? 题目四 如何判断一棵二叉树是平衡 ...

  3. pat根据中序遍历和先序遍历_算法题399:从前序与中序遍历序列构造二叉树

    (给算法爱好者加星标,修炼编程内功) 来源: 数据结构和算法-山大王wld 问题描述 今天我们就不做关于双指针的了,我们爬到树上玩会儿,做一道关于二叉树的题.今天的题就一句话,根据一棵树的前序遍历与中 ...

  4. 数据结构 | 第十一章:二叉树和其他树 | 【前序遍历】【中序遍历】【后序遍历】【层次遍历】 | 并查集

    第5-10章:线性结构,元素之间存在线性次序(线性表.数组与矩阵.栈.队列.跳表和散列表 第11-15章:层次结构(二叉树和树.优先队列.竞赛树.搜索树) 文章目录 11.1 树 11.2 二叉树 1 ...

  5. python实现二叉树的重建2 之由中序遍历和后序遍历重建

    前言 通过上一节对python实现二叉树的重建1 之由前序遍历和中序遍历重建,我相信我们再来做这个问题就不难了,完全可以照猫画虎的来实现,具体的原理几乎是一样的,直接上代码了 code # 通用解法d ...

  6. python实现二叉树的重建1 之由前序遍历和中序遍历重建

    前言 此题是关于树的面试题目的常见题型,题目的含义很清晰,这个就不用多说了 解法 关于这道题的解法有很多不同的样式,通用的解法是这样的: 假如现在我们有如下两个遍历的情况 preorder: [1, ...

  7. 通过前序遍历和中序遍历构建二叉树 python实现

    前言 通过前序遍历和中序遍历构建二叉树的原理,主要是找前序遍历根节点在中序遍历中的位置,然后将二叉树而成左子树和右子树,然后依次进行这样的操作,思路还是比较简单的 代码 class Node:def ...

  8. python数据结构与算法:二叉树及三种遍历方式(先序遍历/中序遍历/后序遍历)

    树的实现采用queue的形式: 树的三种遍历方式(广度优先白能力法):先序遍历(根左右),中序遍历(左根右)以及后序遍历(左右根) ######################P6.4 数据结构### ...

  9. 二叉树--先序中序遍历求后序遍历

    先序遍历:根 左 右 中序遍历:左 根 右 后序遍历:左 右 根 我们可以先从先序遍历中找到根节点,由于知道了根节点那么可以依靠中序遍历找到左子树,右子树.这样再去先序遍历中找到左子树的根节点,然后再 ...

最新文章

  1. 从 CALayer 的 Position、AnchorPoint 说起
  2. 电动滑板改装 特斯拉电机 120A FVT电调的使用
  3. 抢票 | AI未来说学术论坛第八期 深度学习特别专场
  4. 二分图带权匹配、最佳匹配与KM算法
  5. 解答网友提问:如何构建动态表达式实现高级查询服务
  6. 点乘和叉乘的区别_关于延时和混响的区别与专用延时器与混响器的调控技巧
  7. Linux C简单的web服务器
  8. 账号类型_2019年头条、百家、大鱼、企鹅四平台哪种类型的账号最受欢迎?
  9. oracle8i substr,Oracle中的INSTR,NVL和SUBSTR函数的用法详解
  10. 骑士资本高频交易系统事故案例分析
  11. 用visio制作机柜服务器,visio 绘制机柜接线图 实例教程
  12. Oracle 批量修改字段长度
  13. 【好文随记】牛人大学的感悟
  14. Macbook的双系统win10开启虚拟化
  15. Stopping service [Tomcat]和Disconnected from the target VM排查
  16. AG9300|Type-C 转VGA数据转换器解决方案
  17. SPIN: Structure-Preserving Inner Offset Network for Scene Text Recognition —— 论文阅读笔记
  18. win10戴尔游侠GTX1050TI+TensorFlow-gpu+CUDA10.0.130+CUDNN7.4.1.5配置深度学习环境
  19. 爱奇艺逗芽表情搜索分析与实践
  20. android运行报错:File-based resource names must contain only lowercase a-z, 0-9

热门文章

  1. win10电脑桌面透明便签_在win10电脑桌面上使用工作跟进提醒办公软件可用哪个便签软件?...
  2. UE4 获得player id
  3. 如何将多个源文件编译为一个.ko
  4. 学霸系统计算机天才,小欢喜:开局获得学霸系统
  5. Idea报错,但是项目可以正常启动运行
  6. 【转】ABP源码分析二十一:Feature
  7. 【转】Dynamics CRM 365零基础入门学习(三)Dynamics 通过Web API 来调用自定义的Action(使用插件)
  8. 【转】Dynamics CRM 365零基础入门学习(二)Dynamics 插件注册的基本流程
  9. 工作区、暂存区、版本库、远程仓库
  10. 第九节:JWT简介和以JS+WebApi为例基于JWT的安全校验