西部数码网站管理助手 破解版,长春做网站哪家便宜,昆明网站设计价格,文章类型网站前言
昨天看总决赛#xff0c;差距太大#xff0c;看的没意思#xff0c;真的是一点变通没有啊。难受#xff0c;没有写题的状态了。大概率是最后一次看比赛了#xff0c;青春已复过#xff0c;白日忽相催。召唤师要和生活对线了。英雄们的语音#xff0c;台词#xf…前言
昨天看总决赛差距太大看的没意思真的是一点变通没有啊。难受没有写题的状态了。大概率是最后一次看比赛了青春已复过白日忽相催。召唤师要和生活对线了。英雄们的语音台词技能历历在目再多不舍也要说再见。Legends never die调整状态再出发再高的山再长的河也会越过
层序遍历的模板基本上就是这样掌握好。
内容
一、二叉树的层序遍历
102.二叉树的层序遍历
给你二叉树的根节点 root 返回其节点值的 层序遍历 。 即逐层地从左到右访问所有节点。
本题为后端高频面试题被收录于《热招技术岗上岸指南》
广度优先搜素
层序遍历方式就是图论中的广度优先遍历只不过我们应用在二叉树上
/*** Definition for a binary tree node.* type TreeNode struct {* Val int* Left *TreeNode* Right *TreeNode* }*///用切片模拟队列
func levelOrder(root *TreeNode) [][]int {var res [][]intif rootnil{return res}curLevel:[]*TreeNode{root}// 存放当前层节点for len(curLevel)0{nextLevel:[]*TreeNode{}// 准备通过当前层生成下一层vals:[]int{}for _,node:range curLevel{valsappend(vals,node.Val)// 收集当前层的值if node.Left!nil{ // 收集下一层的节点nextLevelappend(nextLevel,node.Left)}if node.Right!nil{nextLevelappend(nextLevel,node.Right)}}resappend(res,vals)curLevelnextLevel// 将下一层变成当前层}return res
}
二、 二叉树的层序遍历II
107.二叉树的层序遍历II
给你二叉树的根节点 root 返回其节点值 自底向上的层序遍历 。 即按从叶子节点所在层到根节点所在的层逐层从左向右遍历
广度优先搜素
上一题反转一下结果集即可
/*** Definition for a binary tree node.* type TreeNode struct {* Val int* Left *TreeNode* Right *TreeNode* }*/
func levelOrderBottom(root *TreeNode) [][]int {var res [][]intif rootnil{return res}curLevel:[]*TreeNode{root}for len(curLevel)0{nextLevel:[]*TreeNode{}vals:[]int{}for _,node:range curLevel{valsappend(vals,node.Val)if node.Left!nil{nextLevelappend(nextLevel,node.Left)}if node.Right!nil{nextLevelappend(nextLevel,node.Right)}}resappend(res,vals)curLevelnextLevel}n:len(res)for i:0;in/2;i{res[i],res[n-1-i]res[n-1-i],res[i]}return res
}最后
为什么有的人总能保持高energy你却总是消耗energy导致没有精力做重要的事。内心充盈精力充沛才能吸引影响别人保护好自己的energy