Leetcode 655.输出二叉树
2024-09-04 17:32:26
输出二叉树
在一个 m*n 的二维字符串数组中输出二叉树,并遵守以下规则:
- 行数 m 应当等于给定二叉树的高度。
- 列数 n 应当总是奇数。
- 根节点的值(以字符串格式给出)应当放在可放置的第一行正中间。根节点所在的行与列会将剩余空间划分为两部分(左下部分和右下部分)。你应该将左子树输出在左下部分,右子树输出在右下部分。左下和右下部分应当有相同的大小。即使一个子树为空而另一个非空,你不需要为空的子树输出任何东西,但仍需要为另一个子树留出足够的空间。然而,如果两个子树都为空则不需要为它们留出任何空间。
- 每个未使用的空间应包含一个空的字符串""。
- 使用相同的规则输出子树。
示例 1:
输入:
输出:
[["", "1", ""],
["2", "", ""]]
示例 2:
输入:
输出:
[["", "", "", "1", "", "", ""],
["", "2", "", "", "", "3", ""],
["", "", "4", "", "", "", ""]]
示例 3:
输入:
输出:
[["", "", "", "", "", "", "", "1", "", "", "", "", "", "", ""]
["", "", "", "2", "", "", "", "", "", "", "", "5", "", "", ""]
["", "3", "", "", "", "", "", "", "", "", "", "", "", "", ""]
["4", "", "", "", "", "", "", "", "", "", "", "", "", "", ""]]
注意: 二叉树的高度在范围 [1, 10] 中。
public class Solution {
public List<List<String>> printTree(TreeNode root) {
int height = getHeight(root);
String[][] res = new String[height][(1 << height) - 1];
for(String[] arr:res)
Arrays.fill(arr,"");
List<List<String>> ans = new ArrayList<>();
fill(res, root, 0, 0, res[0].length);
for(String[] arr:res)
ans.add(Arrays.asList(arr));
return ans;
}
public void fill(String[][] res, TreeNode root, int i, int l, int r) {
if (root == null)
return;
res[i][(l + r) / 2] = "" + root.val;
fill(res, root.left, i + 1, l, (l + r) / 2);
fill(res, root.right, i + 1, (l + r + 1) / 2, r);
}
public int getHeight(TreeNode root) {
if (root == null)
return 0;
return 1 + Math.max(getHeight(root.left), getHeight(root.right));
}
}
最新文章
- React业务实践
- python内置数据类型-字典和列表的排序 python BIT sort——dict and list
- IOS学习笔记之关键词@dynamic
- asp.net 项目在 IE 11 下出现 “__doPostBack”未定义 的解决办法
- (转)innerHTML、innerText和outerHTML、outerText的区别
- php PDO连接数据库
- SDcard进行文件的读取
- 联系博主(推介联系QQ)
- 在后台直接调用sql
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(30)-本地化(多语言)
- 在win2008 r2主域控制域上打开“组策略管理”报错“未打开组策略对对象。你可能没有合适的权限”
- 《转》Linux下的多线程编程
- 关于Unicode字符集
- java计算某个日期是什么节气(24节气)
- eclipse导入新项目后,运行时找不到主类解决办法
- C++对象模型(二):The Semantics of Copy Constructors(拷贝构造函数之编译背后的行为)
- 小甲鱼Python第八讲课后习题
- leetcode — remove-nth-node-from-end-of-list
- 记录一则FGA审计“A用户对B用户某张表的更新操作”需求
- js中去掉字符串的空格、回车换行
热门文章
- C# 字符串转组件名、变量名
- linux 命令——47 iostat (转)
- Incorrect key file for table &#39;./xx_db/xx_table.MYI&#39;; try to repair it
- 国产中标麒麟Linux部署dotnet core 环境并运行项目 (三) 部署运行WEB API项目
- servlet从服务器磁盘文件读出到浏览器显示,中文乱码问题,不要忘记在输入流和输出流都要设置编码格式,否则一个地方没设置不统一就会各种乱码
- 前端-带header和footer的双栏布局
- cookie 和 localStorage 、sessionStorage、 session不同
- ajax 的 promise
- 第28题:leetcode101:Symmetric Tree对称的二叉树
- CentOS6 x86_64最小化安装优化脚本