zoukankan      html  css  js  c++  java
  • LeetCode Populating Next Right Pointers in Each Node

    LeetCode解题之Populating Next Right Pointers in Each Node


    原题

    为二叉树的节点都加入一个next指针,指向跟它在同一高度的右边的节点,假设右边没有节点,就指向None。

    注意点:

    • 最好仅仅用常量的空间
    • 这是一棵全然二叉树

    样例:

    输入:

             1
           /  
          2    3
         /   / 
        4  5  6  7

    输出:

             1 -> NULL
           /  
          2 -> 3 -> NULL
         /   / 
        4->5->6->7 -> NULL

    解题思路

    这里採用了思路最清晰的解法,可是用的空间不是常量的。能够看出事实上就是把树的每一层都串联起来了。要处理每一层的节点。能够使用广度优先遍历,把每一层的节点暂存在列表中。再把这些节点都连接起来。

    AC源代码

    # Definition for binary tree with next pointer.
    class TreeLinkNode(object):
        def __init__(self, x):
            self.val = x
            self.left = None
            self.right = None
            self.next = None
    
    
    class Solution(object):
        def connect(self, root):
            """
            :type root: TreeLinkNode
            :rtype: nothing
            """
            if not root:
                return
            current_level = [root]
            while current_level:
                next_level = []
                for node in current_level:
                    if node.left:
                        next_level.append(node.left)
                    if node.right:
                        next_level.append(node.right)
                for i in range(len(next_level) - 1):
                    next_level[i].next = next_level[i + 1]
                current_level = next_level
    
    
    if __name__ == "__main__":
        None

    欢迎查看我的Github (https://github.com/gavinfish/LeetCode-Python) 来获得相关源代码。

  • 相关阅读:
    学习记录18
    学习记录17
    学习记录16
    小白的心酸连网历程
    学习记录15
    学习记录14
    学习记录13
    学习记录12
    学习记录10
    语法糖
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/7392250.html
Copyright © 2011-2022 走看看