二叉树基础之层序遍历&二叉树的层平均值&填充每个节点的下一个右侧节点指针&在每个树行中找最大值

网友投稿 259 2022-11-19

二叉树基础之层序遍历&二叉树的层平均值&填充每个节点的下一个右侧节点指针&在每个树行中找最大值

二叉树基础之层序遍历

总结解题思路:层序遍历,将每一层的节点放入队列中,而这个队列是个临时队列,在每次使用或者遍历之后给删除了,继续进行下一层次的遍历,通过遍历队列的size则就得到节点的数据

//层序遍历func levelOrder(root *TreeNode) [][]int { var res [][]int st := list.New() if root!=nil{ st.PushBack(root) } var temp []int for st.Len()>0{ len:=st.Len() for i := 0; i < len; i++ { node := st.Remove(st.Front()).(*TreeNode)//先进先出原则 if node.Left!=nil{ st.PushBack(node.Left) } if node.Right != nil{ st.PushBack(node.Right) } temp=append(temp, node.Val) } res=append(res, temp) temp=[]int{} } return res}

二叉树的层平均值

//637.二叉树的层平均值func averageOfLevels(root *TreeNode) []float64 { st:=list.New() if root!=nil{ st.PushBack(root) } var res []float64 var temp int for st.Len()>0{ len:=st.Len() for i := 0; i

填充每个节点的下一个右侧节点指针

116. 填充每个节点的下一个右侧节点指针func connect(root *Node) *Node { if root==nil{ return root } arr:= []*Node{root}//数组 for len(arr)>0 { temp:=arr arr=nil for i,o := range temp {//需要使用指针 if i+1

在每个树行中找最大值

//515.在每个树行中找最大值func largestValues(root *TreeNode) []int { l:=list.New() if root!=nil{ l.PushBack(root) } var res []int var temp int for l.Len()>0{ len:=l.Len() for i := 0; i < len; i++ { node:=l.Remove(l.Front()).(*TreeNode) if node.Right!=nil{ l.PushBack(node.Right) } if node.Left!=nil{ l.PushBack(node.Left) } temp=max(temp,node.Val) } res=append(res, temp) temp=0 } return res}//获取最大值func max(a, b int) int { if a > b { return a } return b}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:mybatis 实体类字段大小写问题 字段获取不到值的解决
下一篇:PCB电路设计中射频接口和射频电路的特性
相关文章

 发表评论

暂时没有评论,来抢沙发吧~