199. 二叉树的右视图

1广度优先遍历二叉树,右边所能看到的肯定是当前层的最后一个节点,所以这个就是求每层的最后一个节点数
2 处理好出队和入队的先后关系, 出队是把当前队列的数据都出了。但是在出队之前得把下一层数据都入队了。
package mainimport "fmt"type TreeNode struct {Val intLeft *TreeNodeRight *TreeNode}func rightSideView(root *TreeNode) []int {if root == nil {return nil}queue := make([]*TreeNode, 0)queue = append(queue, root)var res []intfor len(queue) > 0 {l := len(queue)node := queue[l-1]res = append(res, node.Val)for i := range queue {currNode := queue[i]if currNode.Left != nil {queue = append(queue, currNode.Left)}if currNode.Right != nil {queue = append(queue, currNode.Right)}}queue = queue[l:]}return res}func main() {one := &TreeNode{Val: 1}two := &TreeNode{Val: 2}one.Left = twothree := &TreeNode{Val: 3}one.Right = three//five :=&TreeNode{Val: 5}//two.Right = fivefour := &TreeNode{Val: 4}two.Left = fourfmt.Println(rightSideView(one))//fmt.Println(rightSideView(one))}
