虚拟网站免费注册,网站怎么推广比较好,清远专业网站建设服务,网站建设编辑教程前言
题目大同小异#xff0c;按要求来即可。
内容
一、二叉树的右视图
199.二叉树的右视图
给定一个二叉树的 根节点 root#xff0c;想象自己站在它的右侧#xff0c;按照从顶部到底部的顺序#xff0c;返回从右侧所能看到的节点值。
广度优先搜索
取每层最后一个…前言
题目大同小异按要求来即可。
内容
一、二叉树的右视图
199.二叉树的右视图
给定一个二叉树的 根节点 root想象自己站在它的右侧按照从顶部到底部的顺序返回从右侧所能看到的节点值。
广度优先搜索
取每层最后一个元素放入结果集
func rightSideView(root *TreeNode) []int {var res []intif rootnil{return res}queue:list.New()queue.PushBack(root)for queue.Len()0{length:queue.Len()for i:0;ilength;i{node:queue.Remove(queue.Front()).(*TreeNode)if node.Left!nil{queue.PushBack(node.Left)}if node.Right!nil{queue.PushBack(node.Right)}if ilength-1{resappend(res,node.Val)}}}return res
}
深度优先搜索
func rightSideView(root *TreeNode)(ans []int){var dfs func(*TreeNode,int)dfsfunc(node *TreeNode,depth int){if nodenil{return }if depthlen(ans){ansappend(ans,node.Val)}dfs(node.Right,depth1)dfs(node.Left,depth1)}dfs(root,0)return
} 二、二叉树的层平均数
637.二叉树的层平均数
给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 10-5 以内的答案可以被接受。
广度优先搜索
func averageOfLevels(root *TreeNode) []float64 {var res []float64curLevel:[]*TreeNode{root}for len(curLevel)0{sum:0nextLevel:[]*TreeNode{}for _,node:range curLevel{sumnode.Valif node.Left!nil{nextLevelappend(nextLevel,node.Left)}if node.Right!nil{nextLevelappend(nextLevel,node.Right)}}resappend(res,float64(sum)/float64(len(curLevel)))curLevelnextLevel}return res
}
三、N叉树的层序遍历
给定一个 N 叉树返回其节点值的层序遍历。即从左到右逐层遍历。
树的序列化输入是用层序遍历每组子节点都由 null 值分隔参见示例。
广度优先搜素
一个结点有多个孩子别忘了root为空
/*** Definition for a Node.* type Node struct {* Val int* Children []*Node* }*/func levelOrder(root *Node) [][]int {var res [][]intif rootnil{return res}curLevel:[]*Node{root}for len(curLevel)0{level:[]int{}temp:curLevelcurLevelnilfor _,node:range temp{levelappend(level,node.Val)curLevelappend(curLevel,node.Children...)}//node.Children... 是一个可变参数可以接收任意数量的子节点并将它们存储在一个列表中。resappend(res,level)}return res
}
最后
平静保持calm。脑子不太清醒语言能力有点下降。。。好好休息