给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:
struct Node {
int val;
Node *left;
Node *right;
Node *next;
}
填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL
。
初始状态下,所有 next 指针都被设置为 NULL
。
示例:
提示:
示例图解:①刚开始第一层已经连接好了,所以root遍历这一层,遍历的同时连接下一层
②第二层已经连接好了,root开始遍历第二层,遍历的同时连接好第三层
③第三层已经连接好了,开始遍历第三层,连接第四层,但是由于第四层为空,所以停止。
(该图解引用自 https://blog.csdn.net/qq_41855420/article/details/87825696)
"""
# Definition for a Node.
class Node:
def __init__(self, val, left, right, next):
self.val = val
self.left = left
self.right = right
self.next = next
"""
class Solution:
def connect(self, root: 'Node') -> 'Node':
if not root:
return root
if root.left:
root.left.next = root.right
if root.next:
root.right.next = root.next.left
self.connect(root.left)
self.connect(root.right)
return root
《97 Things Every Programmer Should Know》 - Apply Functional Programming Principles
https://github.com/waynecz/dadda-translate-crx
好看的 Chrome 划词翻译(搜狗)插件,自带生词簿及吐司弹词记忆,可与有道、扇贝单词同步
异步编程 101: 是什么、小试Python asyncio - 新时代的程序员,有两点技能是非常重要的:异步编程的能力和利用多核系统的能力。