1. 题目

在一个 m*n 的二维字符串数组中输出二叉树,并遵守以下规则:

  • 行数 m 应当等于给定二叉树的高度。
  • 列数 n 应当总是奇数。
  • 根节点的值(以字符串格式给出)应当放在可放置的第一行正中间。
  • 根节点所在的行与列会将剩余空间划分为两部分(左下部分和右下部分)。
  • 你应该将左子树输出在左下部分,右子树输出在右下部分。
  • 左下和右下部分应当有相同的大小。即使一个子树为空而另一个非空,你不需要为空的子树输出任何东西,但仍需要为另一个子树留出足够的空间。然而,如果两个子树都为空则不需要为它们留出任何空间。
  • 每个未使用的空间应包含一个空的字符串""。
  • 使用相同的规则输出子树。
示例 1:
输入:1/2
输出:
[["", "1", ""],["2", "", ""]]示例 2:
输入:1/ \2   3\4
输出:
[["", "", "", "1", "", "", ""],["", "2", "", "", "", "3", ""],["", "", "4", "", "", "", ""]]示例 3:
输入:1/ \2   5/ 3 /
4
输出:
[["",  "",  "", "",  "", "", "", "1", "",  "",  "",  "",  "", "", ""]["",  "",  "", "2", "", "", "", "",  "",  "",  "",  "5", "", "", ""]["",  "3", "", "",  "", "", "", "",  "",  "",  "",  "",  "", "", ""]["4", "",  "", "",  "", "", "", "",  "",  "",  "",  "",  "", "", ""]]
注意: 二叉树的高度在范围 [1, 10] 中。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/print-binary-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 先求二叉树高度height
  • 根据高度知道列的宽度width = 2^height - 1
  • 递归在区间中点填入节点的val的string格式
class Solution {public:vector<vector<string>> printTree(TreeNode* root) {int height = getHeight(root);//求高度int width = (2<<(height-1))-1;//确定宽度vector<vector<string>> ans(height,vector<string> (width,""));dfs(ans,root,0,0,width-1);return ans;}int getHeight(TreeNode* root)//递归求高度{if(root == NULL)return 0;return max(getHeight(root->left),getHeight(root->right))+1;}void dfs(vector<vector<string>> &ans, TreeNode* root, int f, int L, int R){if(root == NULL)return;int mid = ((L+R)>>1);//区间中点ans[f][mid] = to_string(root->val);//f深度dfs(ans,root->left,f+1,L,mid-1);//递归填充左右侧dfs(ans,root->right,f+1,mid+1,R);}
};

LeetCode 655. 输出二叉树(二叉树高度二叉树遍历)相关推荐

  1. 【LeetCode 655】输出二叉树

    输出二叉树 https://leetcode.cn/problems/print-binary-tree/ 题目描述 给你一棵二叉树的根节点 root ,请你构造一个下标从 0 开始.大小为 m x ...

  2. Leetcode 129求根节点到叶节点数字之和、104二叉树的最大深度、8字符串转换整数(atoi)、82删除排序链表中的重复元素II、204二分查找、94二叉树的中序遍历、144二叉树的前序遍历

    Top1:Leetcode 129求根节点到叶节点数字之和 官方题解:https://leetcode.cn/problems/sum-root-to-leaf-numbers/solution/qi ...

  3. 刻意练习:LeetCode实战 -- 二叉树的后序遍历

    背景 今天,第二期基础算法(Leetcode)刻意练习训练营 的打卡任务是二叉树的中序遍历,由于二叉树的遍历方式通常来说有四种:前序遍历.中序遍历.后序遍历以及层次遍历,而LeetCode也有二叉树的 ...

  4. 《LeetCode力扣练习》第94题 二叉树的中序遍历 Java

    <LeetCode力扣练习>第94题 二叉树的中序遍历 Java 一.资源 题目: 给定一个二叉树的根节点 root ,返回它的 中序 遍历. 示例 1: 输入:root = [1,nul ...

  5. LeetCode 92反转链表Ⅱ93复制ip地址94二叉树的中序遍历

    微信搜一搜:bigsai 专注于Java.数据结构与算法,一起进大厂不迷路! 算法文章题解全部收录在github仓库bigsai-algorithm,求star! 关注回复进群即可加入力扣打卡群,欢迎 ...

  6. 二叉树笔记(深度遍历与广度遍历+13道leetcode题目(深度3道、广度10道))

    本文章为结合leetcode题目以及公众号"代码随想录"的文章所做的笔记! 感觉代码随想录的题目整理真的很好,比自己盲目刷题好很多. 目录 1.二叉树小记 1.满二叉树与完全二叉树 ...

  7. LeetCode 145. 二叉树的后序遍历(后序遍历总结)

    文章目录 1. 题目信息 2. 解法 2.1 递归 2.2 循环,必须掌握 a. 单栈 b. 双栈解法 3. 前中后序总结 1. 题目信息 给定一个二叉树,返回它的 后序 遍历. 示例:输入: [1, ...

  8. Leetcode: 二叉树的后序遍历

    Leetcode: 二叉树的后序遍历 后遍历的流程:一直往下走,把路口记下来,假如路口有馒头,我们是不吃的,因为要先吃最后的,中间的岔路如果有岔路,就把右边的岔路记下来,但是因为右边没有走过,所以访问 ...

  9. 二叉树的创建、遍历(递归和非递归实现)、交换左右子数、求高度(c++实现)

    要求:以左右孩子表示法实现链式方式存储的二叉树(lson-rson),以菜单方式设计并完成功能任务:建立并存储树.输出前序遍历结果.输出中序遍历结果.输出后序遍历结果.交换左右子树.统计高度,其中对于 ...

最新文章

  1. Lazy Load, 延迟加载图片的 jQuery 插件 - NeoEase
  2. 【转载】从康耐视(NASDAQ : CGNX)看国内视觉识别行业的机会
  3. 类中静态成员变量 无法解析的外部符号
  4. document的window对象
  5. 2016年DDoS攻击趋势分析报告
  6. Redis的特点持久化的原理及优缺点
  7. Chrome的vimium插件的使用笔记
  8. 解析stm32的时钟
  9. CF1082G Petya and Graph(最小割,最大权闭合子图)
  10. 成都信息工程大学c语言题库,成都信息工程学院C语言考试题及答案.docx
  11. Jeecg-Boot 1.1 发布,基于 SpringBoot+Ant Design 的快速开发平台
  12. 基于matlab的不规则面积图像测量,基于matlab的不规则面积图像测量.doc
  13. linux小红帽镜像系统,红帽 Red Hat Linux 系统镜像iso下载(汇总.百度云)
  14. get方法和post方法的区别和联系
  15. Hibernate 学习的书-夏昕(1)
  16. B站黑马Java基础+就业班+各种项目idea版本(正在更新)4测试 反射 注解
  17. 超级外链SEO工具源码 可发9600条优质外链
  18. 【MAC技巧】 MAC下两款免费的风扇调节工具
  19. GB2312编码的字符串如何转换为ISO-8859-1编码?
  20. PCIe Expansion Roms

热门文章

  1. SharePoint 入门介绍
  2. 曙光服务器优势,5大核心优势 探秘曙光Cloudview三大平台
  3. 5G毫米波三大自然缺陷
  4. ios手机 php无法上传文件,【已解决】uni.uploadFile 苹果ios图片上传不成功
  5. Excel 取消Internet及网络路径自动替换为超链接
  6. Window10彻底卸载应用商店
  7. Python 3 学习——函数扩展and迭代器生成器装饰器
  8. linux这样去掉文件里高亮字体
  9. Tyvj 1176 火焰巨魔的惆怅
  10. POJ 3126 Prime Path