<
ARTS 第五周
>
上一篇

ARTS 第四周
下一篇

ARTS 第六周
Toc
ARTS Week-5

Algorithm

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

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

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

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

初始状态下,所有 next 指针都被设置为 NULL

示例:

img1

提示:

示例图解:①刚开始第一层已经连接好了,所以root遍历这一层,遍历的同时连接下一层

img2

②第二层已经连接好了,root开始遍历第二层,遍历的同时连接好第三层

img3

③第三层已经连接好了,开始遍历第三层,连接第四层,但是由于第四层为空,所以停止。

(该图解引用自 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

Review

《97 Things Every Programmer Should Know》 - Apply Functional Programming Principles

Tip

https://github.com/waynecz/dadda-translate-crx

好看的 Chrome 划词翻译(搜狗)插件,自带生词簿及吐司弹词记忆,可与有道、扇贝单词同步

Share

异步编程 101: 是什么、小试Python asyncio - 新时代的程序员,有两点技能是非常重要的:异步编程的能力和利用多核系统的能力。

Top
Foot