Leetcode 655. Print Binary Tree 打印二叉树 解题报告
来源:互联网 发布:淘宝女装素材 编辑:程序博客网 时间:2024/05/17 09:13
给一个二叉树,要求进行打印,也就是在一个高度*宽度的矩阵里面打印就好了,每个子树的root打印在当前子区间的中间就好了
Print a binary tree in an m*n 2D string array following these rules:The row number m should be equal to the height of the given binary tree.The column number n should always be an odd number.The root node's value (in string format) should be put in the exactly middle of the first row it can be put. The column and the row where the root node belongs will separate the rest space into two parts (left-bottom part and right-bottom part). You should print the left subtree in the left-bottom part and print the right subtree in the right-bottom part. The left-bottom part and the right-bottom part should have the same size. Even if one subtree is none while the other is not, you don't need to print anything for the none subtree but still need to leave the space as large as that for the other subtree. However, if two subtrees are none, then you don't need to leave space for both of them.Each unused space should contain an empty string "".Print the subtrees following the same rules.Example 1:Input: 1 / 2Output:[["", "1", ""], ["2", "", ""]]Example 2:Input: 1 / \ 2 3 \ 4Output:[["", "", "", "1", "", "", ""], ["", "2", "", "", "", "3", ""], ["", "", "4", "", "", "", ""]]Example 3:Input: 1 / \ 2 5 / 3 / 4 Output:[["", "", "", "", "", "", "", "1", "", "", "", "", "", "", ""] ["", "", "", "2", "", "", "", "", "", "", "", "5", "", "", ""] ["", "3", "", "", "", "", "", "", "", "", "", "", "", "", ""] ["4", "", "", "", "", "", "", "", "", "", "", "", "", "", ""]]Note: The height of binary tree is in the range of [1, 10].
总的来说就是,第一次dfs获得树的高度,第二次打印,注意根据当前层高计算相应的移动位置就可以了
# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution(object): def printTree(self, root): """ :type root: TreeNode :rtype: List[List[str]] """ import math def dfs(root, h): if root: return max(dfs(root.left,h+1), dfs(root.right,h+1)) else : return h height = dfs(root, 0) width = 2 ** height -1 # 初始化 res = [ ["" for j in range(width)] for i in range(height)] # dfs print def dfs_print(res,root,h,pos): if root: res[h - 1][pos] = '%d' % root.val dfs_print(res, root.left, h+1, pos-2**(height - h - 1)) dfs_print(res, root.right, h+1, pos+2**(height - h - 1)) dfs_print(res,root,1,width/2) return res
阅读全文
0 0
- Leetcode 655. Print Binary Tree 打印二叉树 解题报告
- Leetcode 110. Balanced Binary Tree 平衡二叉树 解题报告
- Leetcode 654. Maximum Binary Tree 最大二叉树 解题报告
- leetCode解题报告之Binary Tree Level Order Traversal II,I(二叉树层次遍历)
- Leetcode 98. Validate Binary Search Tree 验证二叉搜索树 解题报告
- Leetcode 99. Recover Binary Search Tree 恢复二叉搜索树 解题报告
- Leetcode 103. Binary Tree Zigzag Level Order Traversal 二叉树Zigzag遍历 解题报告
- Leetcode 104. Maximum Depth of Binary Tree 二叉树的最大高度 解题报告
- Leetcode 107. Binary Tree Level Order Traversal II 二叉树层次遍历2 解题报告
- Leetcode--655. Print Binary Tree
- leetcode 655. Print Binary Tree
- [LeetCode]Balanced Binary Tree,解题报告
- [LeetCode]Binary Tree Postorder Traversal,解题报告
- [LeetCode]Validate Binary Search Tree, 解题报告
- 【LeetCode】Balanced Binary Tree 解题报告
- LeetCode 解题报告 Binary Tree Postorder Traversal
- LeetCode 解题报告 Binary Tree Preorder Traversal
- 【LeetCode】Validate Binary Search Tree 解题报告
- Java集合-06之 Vector
- 最多能喝多少瓶啤酒呢?
- IDEA集成Git版本控制工具—分享项目到GitHub上和从GitHub克隆项目
- 【并查集入门专题1】A+B+D 三道模板题 hdu1232 hdu1233 poj2524【并查集模板】
- 【noip 2009】最优贸易
- Leetcode 655. Print Binary Tree 打印二叉树 解题报告
- 学习笔记4
- ReentrantReadWriteLock深入分析
- HDOJ 2114 求和公式套用 简单数学题
- 如何用.net制作一个简易爬虫抓取华为应用市场数据
- 解决R/RStudio中安装包“无法与服务器建立连接”
- MTK
- Lambda表达式
- 线程1:线程的创建和启动