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

leetcode 116 Populating Next Right Pointers in Each Node

Posted by BY on July 4, 2020

前言

持续更新了

正文

问题来源

本问题来自leetcode上的116题。

问题描述

给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:

struct Node {
  int val;
  Node *left;
  Node *right;
  Node *next;
}

填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。
初始状态下,所有 next 指针都被设置为 NULL。

示例 1:

分析:

func connect(root *Node) *Node {
  if root == nil {
    return nil
  }
  queue := append([]*Node{}, root)
  for len(queue) != 0 {
    tmpQueue := make([]*Node, 0)
    for i := 0; i < len(queue); i++ {
            if i != len(queue) - 1 {
                queue[i].Next = queue[i+1]
            }
            if queue[i].Left != nil {
                tmpQueue = append(tmpQueue, queue[i].Left)
            }
            if queue[i].Right != nil {
                tmpQueue = append(tmpQueue, queue[i].Right)
            }
    }
        //fmt.Println(tmpQueue)
    queue = tmpQueue
  }
    return root
}

总结:

勤思考。

结语

不管怎么样好好加油。