前言
持续更新了
正文
问题来源
本问题来自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
}
总结:
勤思考。
结语
不管怎么样好好加油。