LeetCode662 二叉树最大宽度】的更多相关文章

Given a binary tree, write a function to get the maximum width of the given tree. The width of a tree is the maximum width among all levels. The binary tree has the same structure as a full binary tree, but some nodes are null. The width of one level…
给定一个二叉树,编写一个函数来获取这个树的最大宽度.树的宽度是所有层中的最大宽度.这个二叉树与满二叉树(full binary tree)结构相同,但一些节点为空. 每一层的宽度被定义为两个端点(该层最左和最右的非空节点,两端点间的null节点也计入长度)之间的长度. 示例 1: 输入: 1 / \ 3 2 / \ \ 5 3 9 输出: 4 解释: 最大值出现在树的第 3 层,宽度为 4 (5,3,null,9). 示例 2: 输入: 1 / 3 / \ 5 3 输出: 2 解释: 最大值出现…
1501 二叉树最大宽度和高度  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 白银 Silver     题目描述 Description   给出一个二叉树,输出它的最大宽度和高度. 输入描述 Input Description   第一行一个整数n. 下面n行每行有两个数,对于第i行的两个数,代表编号为i的节点所连接的两个左右儿子的编号.如果没有某个儿子为空,则为0. 输出描述 Output Description 输出共一行,输出二叉树的最大宽度和高度,用一个空格…
1501 二叉树最大宽度和高度  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 白银 Silver       题目描述 Description 给出一个二叉树,输出它的最大宽度和高度. 输入描述 Input Description 第一行一个整数n. 下面n行每行有两个数,对于第i行的两个数,代表编号为i的节点所连接的两个左右儿子的编号.如果没有某个儿子为空,则为0. 输出描述 Output Description 输出共一行,输出二叉树的最大宽度和高度,用一个空格隔开…
难度等级:白银    1501 二叉树最大宽度和高度 题目描述 Description 给出一个二叉树,输出它的最大宽度和高度. 输入描述 Input Description 第一行一个整数n. 下面n行每行有两个数,对于第i行的两个数,代表编号为i的节点所连接的两个左右儿子的编号.如果没有某个儿子为空,则为0. 输出描述 Output Description 输出共一行,输出二叉树的最大宽度和高度,用一个空格隔开. 样例输入 Sample Input 5 2 3 4 5 0 0 0 0 0 0…
/*层次遍历二叉树,每一层遍历完成以后都重新插入特定的指针 (比如本例使用的特殊指针是数据元素为#,左右儿子为空的指针), 这样在每次访问到所指向数据为#的队列中的结点指针是就知道该指针是这层的末尾,需要统计, 但是又有个问题是,最后队中所剩下的节点指针起数据一定是#,因此会陷入无限循环,解决的方法是, 在发现当前结点指针所指向的结点的数据是#的时候,在查看队列中是否还有元素(节点指针), 如果没有,则说明是最后一层的最后一个结点指针,所以应该跳出循环*/ #include <stdio.h>…
二叉树的宽度 思路:层序遍历的时候,记录每层的节点数量,最后取记录中的最多的数量. 代码实现: public int solution(TreeNode node){ LinkedList<TreeNode> queue=new LinkedList<>(); queue.offer(node); int ans=1; TreeNode temNode=null; while (!queue.isEmpty()){ ans=Math.max(ans,queue.size()); i…
二叉树最大宽度 给定一个二叉树,编写一个函数来获取这个树的最大宽度.树的宽度是所有层中的最大宽度.这个二叉树与满二叉树(full binary tree)结构相同,但一些节点为空. 每一层的宽度被定义为两个端点(该层最左和最右的非空节点,两端点间的null节点也计入长度)之间的长度. 示例 1: 输入: 输出: 4 解释: 最大值出现在树的第 3 层,宽度为 4 (5,3,null,9). 示例 2: 输入: 输出: 2 解释: 最大值出现在树的第 3 层,宽度为 2 (5,3). 示例 3:…
1501 二叉树最大宽度和高度  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 白银 Silver 题解       题目描述 Description 给出一个二叉树,输出它的最大宽度和高度. 输入描述 Input Description 第一行一个整数n. 下面n行每行有两个数,对于第i行的两个数,代表编号为i的节点所连接的两个左右儿子的编号.如果没有某个儿子为空,则为0. 输出描述 Output Description 输出共一行,输出二叉树的最大宽度和高度,用一个空…
662. 二叉树最大宽度 给定一个二叉树,编写一个函数来获取这个树的最大宽度.树的宽度是所有层中的最大宽度.这个二叉树与满二叉树(full binary tree)结构相同,但一些节点为空. 每一层的宽度被定义为两个端点(该层最左和最右的非空节点,两端点间的null节点也计入长度)之间的长度. 示例 1: 输入: 1 / \ 3 2 / \ \ 5 3 9 输出: 4 解释: 最大值出现在树的第 3 层,宽度为 4 (5,3,null,9). 示例 2: 输入: 1 / 3 / \ 5 3 输出…
http://codevs.cn/problem/1501/   题目描述 Description 给出一个二叉树,输出它的最大宽度和高度. 输入描述 Input Description 第一行一个整数n. 下面n行每行有两个数,对于第i行的两个数,代表编号为i的节点所连接的两个左右儿子的编号.如果没有某个儿子为空,则为0. 输出描述 Output Description 输出共一行,输出二叉树的最大宽度和高度,用一个空格隔开. 样例输入 Sample Input 5 2 3 4 5 0 0 0…
简单的DFS,用数组w记录每一层的宽度就行了,就是遇到一层就++.中间发现在C++里面,如果int未初始化就是用也是有异常的.还有二叉树的数组表示时,从1开始计数会比较好.还有后来学会了数组这样的初始化为0的方法:int l[100] = {0},r[100] = {0}; #include <iostream> using namespace std; int l[20]; int r[20]; int w[20]; int dfs(int level, int node) { w[leve…
节点数据结构 class TreeNode { TreeNode left = null; TreeNode right = null; } 最大深度,基本思路是:使用递归,分别求出左子树的深度.右子树的深度,两个深度的较大值+1就是最大深度. // 获取最大深度 public static int getMaxDepth(TreeNode treeNode) { if (treeNode == null) return 0; else { int left = getMaxDepth(tree…
2018-07-27 15:55:13 问题描述: 问题求解: 题目中说明了最后的宽度计算其实是按照满二叉树来进行计算的,也就是说如果我们能够得到每层最左边的节点编号和最右边的节点编号,那么本题就可以进行解决了. 另外,在如何编号的问题上,既然是满二叉树,那么编号的方式自然是父节点i,左子节点2 * i,右子节点2 * i + 1. public int widthOfBinaryTree(TreeNode root) { return helper(root, 0, 1, new ArrayL…
                     题目描述 Description 给出一个二叉树,输出它的最大宽度和高度. 输入描述 Input Description 第一行一个整数n. 下面n行每行有两个数,对于第i行的两个数,代表编号为i的节点所连接的两个左右儿子的编号.如果没有某个儿子为空,则为0. 输出描述 Output Description 输出共一行,输出二叉树的最大宽度和高度,用一个空格隔开. 样例输入 Sample Input 5 2 3 4 5 0 0 0 0 0 0 样例输出…
题目:http://www.wikioi.com/problem/1501/ 给你一颗二叉树,求该数的宽和高, 首先求出树的高,直接进行二叉树遍历,能够得到二叉树的高 然后是得到宽,本人采用的是一层一层的遍历,求出每一层节点的个数,最大的则是该树的宽了, 代码: #include <cstdio> #include <cstring> #include <stack> #include <queue> #include <iostream> us…
数据结构中一直对二叉树不是很了解,今天趁着这个时间整理一下 许多实际问题抽象出来的数据结构往往是二叉树的形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要.     二叉树(BinaryTree)是n(n≥0)个结点的有限集,它或者是空集(n=0),或者由一个根结点及两棵互不相交的.分别称作这个根的左子树和右子树的二叉树组成.     这个定义是递归的.由于左.右子树也是二叉树, 因此子树也可为空树.下图中展现了五种不同基本形态的二叉树.…
1501 二叉树最大宽度和高度 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题目描述 Description 给出一个二叉树,输出它的最大宽度和高度. 输入描述 Input Description 第一行一个整数n. 下面n行每行有两个数,对于第i行的两个数,代表编号为i的节点所连接的两个左右儿子的编号.如果没有某个儿子为空,则为0. 输出描述 Output Description 输出共一行,输出二叉树的最大宽度和高度,用一个空格隔开. 样例输入 Sa…
这几天详细了解了下二叉树的相关算法,原因是看了唐boy的一篇博客(你会翻转二叉树吗?),还有一篇关于百度的校园招聘面试经历,深刻体会到二叉树的重要性.于是乎,从网上收集并整理了一些关于二叉树的资料,及相关算法的实现(主要是Objective-C的,但是算法思想是相通的),以便以后复习时查阅. 什么是二叉树? 在计算机科学中,二叉树是每个节点最多有两个子树的树结构.通常子树被称作“左子树”和“右子树”,左子树和右子树同时也是二叉树.二叉树的子树有左右之分,并且次序不能任意颠倒.二叉树是递归定义的,…
一:初衷 我自己也好奇,为什么莫名其妙的想起写这个,其实数据里面包含的结构和逻辑我自己觉得才是最原始经典的,最近也在学swift,就向着利用swift整理一些二叉树.自己刚开始的时候也是用OC看着别的小伙伴的博客在写的,OC的逻辑是理清楚了,但用swift去写的时候,遇到些许问题,不是逻辑上的问题,就是语法问题.经过这两天的这个二叉树遇到的问题发现,还是觉得基础不够扎实.以为最基本的掌握了,其实不然,有好多东西还是欠火候!还是得静下心,就从最基本的开始吧!不知道有没有和我一样的小伙伴,基础你真的…
二叉树的锯齿形层次遍历 给出一棵二叉树,返回其节点值的锯齿形层次遍历(先从左往右,下一层再从右往左,层与层之间交替进行) 样例 给出一棵二叉树 {3,9,20,#,#,15,7}, 返回其锯齿形的层次遍历为: [     [3],     [20,9],     [15,7] ] 标签 领英 二叉树 队列 二叉树遍历 宽度优先搜索 code /** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNo…
二叉树的层次遍历 II 给出一棵二叉树,返回其节点值从底向上的层次序遍历(按从叶节点所在层到根节点所在的层遍历,然后逐层从左往右遍历) 样例 给出一棵二叉树 {3,9,20,#,#,15,7}, 按照从下往上的层次遍历为: [     [15,7],     [9,20],     [3] ] 标签 二叉树 队列 二叉树遍历 宽度优先搜索 code /** * Definition of TreeNode: * class TreeNode { * public: * int val; * Tr…
一.构建与遍历二叉树 基本性质 1)在二叉树的第i层上最多有2i-1 个节点 .(i>=1)2)二叉树中如果深度为k,那么最多有2k-1个节点.(k>=1)3)在完全二叉树中,具有n个节点的完全二叉树的深度为[log2n]+1,其中[log2n]是向下取整.向下取整就是小数点后面的数字无论多少,都只取前面的整数. 4)二叉树的存储可以顺序存储即数组形式,也可以链式存储. class Node(object): def __init__(self,item): self.key=item sel…
一.树与二叉树相关算法 1.二叉树按顺序结构存储,求编号为i和j的两个结点的最近公共祖先结点的值 1 ElemType CommonAncestor( SeqTree T, int i, int j ) 2 { 3 while ( i != j ) 4 { 5 if ( i > j ) i /= 2; 6 else j /= 2; 7 } 8 return T[i]; 9 } 2.二叉树前序遍历非递归算法 1 void PreOrder( BiTree T ) 2 { 3 BiTree S[MA…
1.  概念 二叉树节点的结构: class Node{ int value; // value表示二叉树的节点值 Node left; Node right; // left和right表示二叉树的两个孩子 Node(int data){ this.value = data; } } 如图: 2.  二叉数的遍历 2.1  按顺序遍历二叉树 先序遍历:中.左.右 中序遍历:左.中.右 后序遍历:左.右.中 以下图二叉树为例: 先序遍历结果为: 1 ,2,4,5,3,6,7 中序遍历结果为: 4…
1.第226题:翻转二叉树 递归+迭代两种实现方式: /** 反转二叉树 * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; * this.left = this.right = null; * } */ /** * @param {TreeNode} root * @return {TreeNode} * 第一种方式迭代 * 执行用时 :72 ms, 在所有 JavaScript 提…
原题网址:http://www.lintcode.com/zh-cn/problem/binary-tree-level-order-traversal-ii/ 给出一棵二叉树,返回其节点值从底向上的层次序遍历(按从叶节点所在层到根节点所在的层遍历,然后逐层从左往右遍历) 您在真实的面试中是否遇到过这个题? Yes 样例 给出一棵二叉树 {3,9,20,#,#,15,7}, 3 / \ 9 20 / \ 15 7 按照从下往上的层次遍历为: [ [15,7], [9,20], [3] ] 标签…
本题考查点有以下几个: 对数据输入的熟练掌握 二叉树的建立 二叉树的宽度优先遍历 首先,特别提一下第一点,整个题目有相当一部分耗时在了第一个考查点上(虽然有些不必要,因为本应该有更简单的方法).这道题的输入有以下几种方案: 一次性输入并直接得到要得到的数据 输入后进行加工处理 对于第一种方案,我采用的是与正则相结合的方案 scanf("(%d%[,A-Z]) ",&d,s)) 得到这样的写法可谓是费了一番功夫.难点有几个,最突出的是考虑数据不存在的情况:如()(1,) 我的解决…
前言 第一天的算法都还没有缓过来,直接就进入了第二天的算法学习.前一天一直在整理Binary Search的笔记,也没有提前预习一下,好在Binary Tree算是自己最熟的地方了吧(LeetCode上面Binary Tree的题刷了4遍,目前95%以上能够Bug Free)所以还能跟得上,今天听了一下,觉得学习到最多的,就是把Traverse和Divide Conquer分开来讨论,觉得开启了一片新的天地!今天写这个博客我就尽量把两种方式都写一写吧. Outline: 二叉树的遍历 前序遍历t…
白银上分黄金失败=.= 在之前有很认真的写了一波排序,所以排序并不是很怂,还是那个理,现阶段学习的都是比较简单的排序,都是所谓的冒泡排序啊,桶排序这类,至于插排和选择排序,再往后又是什么快拍就很尬了. 说一下今天A的题 1075 明明的随机数 1076 排序 1212 最大公约数 1430 素数判定 1978 斐波那契数列 1842 递归第一次 3038 3n+1问题 进制转换和模拟还是很怂,二维数组不是很好,模拟题很方,进制转换就更没什么思路了,至于递推递归,记得并没有讲过,只是自己在看,递推…