662. 二叉树最大宽度
662. 二叉树最大宽度
给定一个二叉树,编写一个函数来获取这个树的最大宽度。树的宽度是所有层中的最大宽度。这个二叉树与满二叉树(full binary tree)结构相同,但一些节点为空。
每一层的宽度被定义为两个端点(该层最左和最右的非空节点,两端点间的null节点也计入长度)之间的长度。
示例 1:输入: 1/ \3 2/ \ \ 5 3 9 输出: 4
解释: 最大值出现在树的第 3 层,宽度为 4 (5,3,null,9)。
示例 2:输入: 1/ 3 / \ 5 3 输出: 2
解释: 最大值出现在树的第 3 层,宽度为 2 (5,3)。
示例 3:输入: 1/ \3 2 / 5 输出: 2
解释: 最大值出现在树的第 2 层,宽度为 2 (3,2)。
示例 4:输入: 1/ \3 2/ \ 5 9 / \6 7
输出: 8
解释: 最大值出现在树的第 4 层,宽度为 8 (6,null,null,null,null,null,null,7)。
注意: 答案在32位有符号整数的表示范围内。
解题思路
- 通过list,记录每一层最左元素的位置
- 使用前序遍历,每次计算当前位置和该层最左元素的位置的差值,即为宽度
代码
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val = val; }* TreeNode(int val, TreeNode left, TreeNode right) {* this.val = val;* this.left = left;* this.right = right;* }* }*/
class Solution {List<Integer> list=new ArrayList<>();int res=0;public int widthOfBinaryTree(TreeNode root) {dfs(root,0,0);return res;}public void dfs(TreeNode root,int pos,int d) {if(root==null) return;if(list.size()-1<d)list.add(pos);res=Math.max(res,pos-list.get(d)+1);dfs(root.left,pos*2,d+1);dfs(root.right,pos*2+1,d+1);}
}
662. 二叉树最大宽度相关推荐
- 662. 二叉树最大宽度 golang
662. 二叉树最大宽度 给定一个二叉树,编写一个函数来获取这个树的最大宽度.树的宽度是所有层中的最大宽度.这个二叉树与满二叉树(full binary tree)结构相同,但一些节点为空. 每一层的 ...
- 41. Leetcode 662. 二叉树最大宽度 (二叉树-二叉树性质)
给定一个二叉树,编写一个函数来获取这个树的最大宽度.树的宽度是所有层中的最大宽度.这个二叉树与满二叉树(full binary tree)结构相同,但一些节点为空.每一层的宽度被定义为两个端点(该层最 ...
- leetcode 662. Maximum Width of Binary Tree | 662. 二叉树最大宽度(BFS)
题目 https://leetcode.com/problems/maximum-width-of-binary-tree/ 题解 本题思路来源于二叉树的层序遍历. 层序遍历类似问题:leetcode ...
- LeetCode 662. 二叉树最大宽度(递归)
1. 题目 给定一个二叉树,编写一个函数来获取这个树的最大宽度.树的宽度是所有层中的最大宽度.这个二叉树与满二叉树(full binary tree)结构相同,但一些节点为空. 每一层的宽度被定义为两 ...
- LeetCode 662 二叉树最大宽度
原题链接 标签 :二叉树 BFS 解题思路:BFS广度优先 + 队列 /*** Definition for a binary tree node.* struct TreeNode {* int v ...
- c语言返回二叉树的大小,C语言中计算二叉树的宽度的两种方式
C语言中计算二叉树的宽度的两种方式 二叉树作为一种很特殊的数据结构,功能上有很大的作用!今天就来看看怎么计算一个二叉树的最大的宽度吧. 采用递归方式 下面是代码内容: int GetMaxWidth( ...
- scau 18924 二叉树的宽度
Description 二叉树的宽度指的是具有节点数目最多的那一层的节点个数.1/ \2 3/ 4 答案为2, 第二层节点数最多,为2个节点. 输入格式 共n行. 第一行一个整数n,表示有n个结点,编 ...
- 1501 二叉树最大宽度和高度
题目链接:http://codevs.cn/problem/1501/ 题目描述 Description 给出一个二叉树,输出它的最大宽度和高度. 输入描述 Input Description 第一行 ...
- 2018.3.26 1501 二叉树最大宽度和高度
题目描述 给出一个二叉树,输出它的最大宽度和高度. 输入描述 第一行一个整数n.下面n行每行有两个数,对于第i行的两个数,代表编号为i的节点所连接的两个左右儿子的编号.如果没有某个儿子为空,则为0. ...
最新文章
- 5G 标准 — 3GPP
- 照书学WPF之 Dependency Property 1
- uva1507(状态压缩+dfs)
- html5 元素重叠,javascript – 检查两个或多个DOM元素是否重叠
- Finalize,Dispose,SuppressFinalize
- java多态的实现_Java多态的实现机制是什么,写得非常好!
- 科普:为什么 String hashCode 方法选择数字31作为乘子
- 三菱FX系列PLC-编程2
- B站崩了,一群跟着躺枪!「小破站」到底发生了什么?
- 今天我们谈谈关于java自学的那些事儿(为那些目标模糊的码农们)
- 股票学习-量柱和k线-第十天------量线的生成机制--------谷底线
- 2099 找到和最大的长度为 K 的子序列
- 问题 E: 1.10 旅行时间 根据火车的出发时间和到达时间,编写程序计算整个旅途所用的时间。
- wait()、notify()、notifyAll()使用详解
- 将本地docker镜像推送到阿里云仓库
- Kali linux渗透测试系列————34、Kali linux 维持访问之创建Web后门
- 用python进行股票数据分析_用 Python 做股市数据分析(2)
- 数据驱动的网络入侵检测:最新动向与研究趋势
- 第四章 前馈神经网络
- 如何剪裁svg并压缩
热门文章
- iptables:tproxy做透明代理
- 145. 二叉树的后序遍历
- Wireshark(2):应用Wireshark观察基本网络协议
- java教程百度文库,成功拿到offer
- 如何保证消息队列的高可用?透彻分析源码
- java过滤器如何操作数据库_jsp – 使用Java中的过滤器验证用户名,密码(与数据库联系)...
- 经典冒泡排序及其优化
- Ubuntu 18.04 下如何配置mysql 及 配置远程连接
- [BZOJ1626][Usaco2007 Dec]Building Roads 修建道路
- Maven+eclipse快速入门