力扣刷题第二十七天--二叉树

前言

题目大同小异,按要求来即可。

内容

一、二叉树的右视图

199.二叉树的右视图

给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。

广度优先搜索

取每层最后一个元素,放入结果集

func rightSideView(root *TreeNode) []int {
    var res []int
    if root==nil{
        return res
    }
 
 queue:=list.New()
 queue.PushBack(root)

 for queue.Len()>0{
     length:=queue.Len()
     for i:=0;i
深度优先搜索
func rightSideView(root *TreeNode)(ans []int){
    var dfs func(*TreeNode,int)
    dfs=func(node *TreeNode,depth int){
        if node==nil{
            return 
        }
        if depth==len(ans){
            ans=append(ans,node.Val)
        }
        dfs(node.Right,depth+1)
        dfs(node.Left,depth+1)
    }
    dfs(root,0)
    return
}
 二、二叉树的层平均数

637.二叉树的层平均数

给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 10-5 以内的答案可以被接受。

广度优先搜索
func averageOfLevels(root *TreeNode) []float64 {
    var res []float64
    curLevel:=[]*TreeNode{root}
    for len(curLevel)>0{
        sum:=0
        nextLevel:=[]*TreeNode{}
        for _,node:=range curLevel{
            sum+=node.Val

            if node.Left!=nil{
                nextLevel=append(nextLevel,node.Left)
            }
            if node.Right!=nil{
                nextLevel=append(nextLevel,node.Right)
            }
        
        }
    res=append(res,float64(sum)/float64(len(curLevel)))
       curLevel=nextLevel
    }
    return  res
}
三、N叉树的层序遍历 

给定一个 N 叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。

树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例)。

广度优先搜素

一个结点有多个孩子,别忘了root为空

/**
 * Definition for a Node.
 * type Node struct {
 *     Val int
 *     Children []*Node
 * }
 */

func levelOrder(root *Node) [][]int {
    var res [][]int
    if root==nil{
        return res
    }
    
    curLevel:=[]*Node{root}
    for len(curLevel)>0{
        
        level:=[]int{}
      temp:=curLevel
      curLevel=nil
      for _,node:=range temp{
          level=append(level,node.Val)
          curLevel=append(curLevel,node.Children...)
      }//node.Children... 是一个可变参数,可以接收任意数量的子节点,并将它们存储在一个列表中。
    
        res=append(res,level)
      
    }
    return res
}

最后

平静,保持calm。脑子不太清醒,语言能力有点下降。。。好好休息!

你可能感兴趣的:(力扣二叉树,leetcode,算法,数据结构,golang,二叉树)