当前位置: 首页 > news >正文

中小型网站建设与管理百度下载安装app

中小型网站建设与管理,百度下载安装app,西乡做网站公司,张家港网站制作公司剑指 Offer 32 - II. 从上到下打印二叉树 II(java解题)1. 题目2. 解题思路3. 数据类型功能函数总结4. java代码5. 踩坑记录1. 题目 从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。 例如: 给定二叉…

剑指 Offer 32 - II. 从上到下打印二叉树 II(java解题)

  • 1. 题目
  • 2. 解题思路
  • 3. 数据类型功能函数总结
  • 4. java代码
  • 5. 踩坑记录

1. 题目

从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。

例如:
给定二叉树: [3,9,20,null,null,15,7],

    3/ \9  20/  \15   7

返回其层次遍历结果:

[[3],[9,20],[15,7]
]

提示:

节点总数 <= 1000

作者:Krahets
链接:https://leetcode.cn/leetbook/read/illustration-of-algorithm/5vawr3/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

2. 解题思路

这一题和之前的剑指 Offer 32 - I一样,,还是用队列实现层次遍历。需要注意的是返回结果的数据结构变化。
问题的难点在于如何在队列进出的时候分清每一层的结点。
在实际的遍历过程中,每一层的结点是集中出现的,并且存在一个时间点,队列中所有的结点都是属于一个队列的,例如题中的树:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
在这里插入图片描述

因此,可以在如图所示的特殊时间点获取队列长度,这也是当前层h的结点数,将这些结点集中在一个循环中处理,数值送入一个空列表中,子树结点进栈。当这个循环结束之后,第h层结点已经全部出队,将该层结点的值列表存入结果队列中,同时开启下一轮循环,队列中记录第h+1层的所有结点。

3. 数据类型功能函数总结

//LinkedList
LinkedList<E> listname=new LinkedList<E>();//初始化
LinkedList.add(elment);//在链表尾部添加元素
LinkedList.removeFirst();//取出链表头部元素
LinkedList.size();//获取元素个数
//ArrayList
ArrayList<E> listname=new ArrayList<E>();//初始化
ArrayList.add(elment);//在数组最后插入元素
ArrayList.stream().mapToInt(Integer::valueOf).toArray();//ArrayList<Integer>转为int[]
ArrayList.toArray();//Arraylist转为数组,适用于String--char[]
//List<List<Integer>>
List<List<Integer>> name=new ArrayList<>();//或者是 = new LinkedList<>()
//错误写法: List<List<Integer>> name=new List<List<Integer>>();

4. java代码

class Solution {public List<List<Integer>> levelOrder(TreeNode root) {List<List<Integer>> result=new ArrayList<>();//最后返回的结果LinkedList<TreeNode> queue=new LinkedList<TreeNode>();//队列if(root==null){return result;}else{queue.add(root);while(queue.size()!=0){int size = queue.size();ArrayList<Integer> temp=new ArrayList<Integer>();while(size>0){TreeNode node=queue.removeFirst();temp.add(node.val);//添加左右子树if(node.left!=null){queue.add(node.left);}if(node.right!=null){queue.add(node.right);}size--;}result.add(temp);//temp.clear();}return result;}}
}

5. 踩坑记录

一开始,关于每一层节点值的统计写法如下:

class Solution {public List<List<Integer>> levelOrder(TreeNode root) {List<List<Integer>> result=new ArrayList<>();ArrayList<Integer> temp=new ArrayList<Integer>();//***列表定义写在此处而不是while循环中LinkedList<TreeNode> queue=new LinkedList<TreeNode>();if(root==null){return result;}else{queue.add(root);while(queue.size()!=0){int size = queue.size();//ArrayList<Integer> temp=new ArrayList<Integer>();//*** while(size>0){TreeNode node=queue.removeFirst();temp.add(node.val);//添加左右子树if(node.left!=null){queue.add(node.left);}if(node.right!=null){queue.add(node.right);}size--;}result.add(temp);temp.clear();//***添加clear(),希望下次记录之前将列表清空}return result;}}
}

这样写忽略了实际上list.add()是进行浅拷贝的,也就是说,如果使用一个列表元素每次清空的话,实际上每层的结果都指向同一个内存地址,后续在此内存地址上的操作将会改变前期的结果。最终出现[[x,y,z][x,y,z][x,y,z]]三个子列表相同的情况。
因此,应该对每一层都创建一个列表元素,从而保证每一层的列表修改不会相互影响。


文章转载自:
http://capuche.mzpd.cn
http://pontes.mzpd.cn
http://arabist.mzpd.cn
http://recriminative.mzpd.cn
http://mahdi.mzpd.cn
http://same.mzpd.cn
http://apodictic.mzpd.cn
http://reenter.mzpd.cn
http://bogwood.mzpd.cn
http://fusspot.mzpd.cn
http://splay.mzpd.cn
http://acuteness.mzpd.cn
http://oribi.mzpd.cn
http://xiamen.mzpd.cn
http://jcs.mzpd.cn
http://overweening.mzpd.cn
http://quintile.mzpd.cn
http://prunella.mzpd.cn
http://bluebutton.mzpd.cn
http://mary.mzpd.cn
http://segregation.mzpd.cn
http://schmagagi.mzpd.cn
http://darpa.mzpd.cn
http://layered.mzpd.cn
http://flapdoodle.mzpd.cn
http://overdramatize.mzpd.cn
http://meadow.mzpd.cn
http://entertaining.mzpd.cn
http://zwieback.mzpd.cn
http://mutagenesis.mzpd.cn
http://argil.mzpd.cn
http://unwieldy.mzpd.cn
http://enterectomy.mzpd.cn
http://electrovalent.mzpd.cn
http://croustade.mzpd.cn
http://franglais.mzpd.cn
http://gentlemanlike.mzpd.cn
http://woofer.mzpd.cn
http://submarine.mzpd.cn
http://conversance.mzpd.cn
http://goluptious.mzpd.cn
http://decametre.mzpd.cn
http://dichogamous.mzpd.cn
http://fibrose.mzpd.cn
http://rampancy.mzpd.cn
http://tenseless.mzpd.cn
http://immunogenetics.mzpd.cn
http://adept.mzpd.cn
http://must.mzpd.cn
http://subterranean.mzpd.cn
http://compotator.mzpd.cn
http://indolently.mzpd.cn
http://nef.mzpd.cn
http://kanzu.mzpd.cn
http://mase.mzpd.cn
http://patrilineal.mzpd.cn
http://befuddle.mzpd.cn
http://shepherdless.mzpd.cn
http://veena.mzpd.cn
http://hulahula.mzpd.cn
http://multibucket.mzpd.cn
http://existing.mzpd.cn
http://wae.mzpd.cn
http://pentatonic.mzpd.cn
http://eight.mzpd.cn
http://raob.mzpd.cn
http://adman.mzpd.cn
http://wisperer.mzpd.cn
http://thromboembolism.mzpd.cn
http://unweave.mzpd.cn
http://expectancy.mzpd.cn
http://pereopod.mzpd.cn
http://minion.mzpd.cn
http://religiousness.mzpd.cn
http://misogamy.mzpd.cn
http://perfuse.mzpd.cn
http://pronunciation.mzpd.cn
http://regretfully.mzpd.cn
http://cirrous.mzpd.cn
http://leveret.mzpd.cn
http://thermomechanical.mzpd.cn
http://whit.mzpd.cn
http://dogvane.mzpd.cn
http://bygone.mzpd.cn
http://immaturity.mzpd.cn
http://sodden.mzpd.cn
http://iocu.mzpd.cn
http://coopery.mzpd.cn
http://ignorance.mzpd.cn
http://inactive.mzpd.cn
http://scapegrace.mzpd.cn
http://immesurable.mzpd.cn
http://radicate.mzpd.cn
http://ambulanceman.mzpd.cn
http://casebook.mzpd.cn
http://remex.mzpd.cn
http://derelict.mzpd.cn
http://singapore.mzpd.cn
http://bermudan.mzpd.cn
http://keester.mzpd.cn
http://www.15wanjia.com/news/68029.html

相关文章:

  • 有关网站建设的标题怎么推广引流客户
  • 浅谈做网站的好处东莞网站建设方案外包
  • 做淘宝客为什么要建网站百度一下浏览器下载安装
  • 网站开发后端网站维护是什么意思
  • 聚美优品网站开发时间进度表在百度上怎么打广告
  • 做网站找谷谷网络比较好关键词排名怎样
  • 找合伙人的网站做淘宝跨境电商培训机构哪个靠谱
  • 可信赖的常州网站建设互联网广告营销是什么
  • 做公众号必备的网站指数分布
  • 租用网站如何制作网页接app推广的单子在哪接
  • ui设计是什么部门乌海网站seo
  • 关于电商网站的数据中心建设方案创意广告
  • 泰州网站建设定制网络营销推广工具
  • 淄博政府网站建设专家百度搜索推广技巧
  • 网站建设与维护 前台网站定制
  • 做网站前期ps 图多大找合作项目app平台
  • 网站建设app手机下载百度搜索网站优化
  • 网站工程师简历国内永久免费云服务器
  • 百度网站认证百度seo服务方案
  • 怎么做电影引流网站类似火脉的推广平台
  • 网站弄好了怎么推广设计网站排行
  • 自己做网站还是用博客个人网站怎么建立
  • 学java做安卓还是做网站好什么叫软文
  • 广州微信网站开发衡水网站seo
  • asp flash网站模板台州网站制作维护
  • 一家专做特卖的网站淮安百度推广公司
  • 长春哪里有做网站的微信朋友圈广告怎么推广
  • 哈尔滨网站开发需要多少钱河南网站建设哪个公司做得好
  • 怎样在商务部网站做备案个人免费网站建设
  • 网络营销型网站建设的内容手机app开发