美文网首页leetcode
每个节点的右向指针

每个节点的右向指针

作者: momo1023 | 来源:发表于2018-09-11 18:37 被阅读6次

    给定一个二叉树

    struct TreeLinkNode {
      TreeLinkNode *left;
      TreeLinkNode *right;
      TreeLinkNode *next;
    }
    

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

    说明:
    你只能使用额外常数空间。
    使用递归解题也符合要求,本题中递归程序占用的栈空间不算做额外的空间复杂度。
    你可以假设它是一个完美二叉树(即所有叶子节点都在同一层,每个父节点都有两个子节点)。

    给定完美二叉树,
    
         1
       /  \
      2    3
     / \  / \
    4  5  6  7
    调用你的函数后,该完美二叉树变为:
    
         1 -> NULL
       /  \
      2 -> 3 -> NULL
     / \  / \
    4->5->6->7 -> NULL
    
    # Definition for binary tree with next pointer.
    # class TreeLinkNode:
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    #         self.next = None
    
    class Solution:
        # @param root, a tree link node
        # @return nothing
        def connect(self, root):
            if root is None:
                return root
            node = [root]
            while node:
                temp = []
                for p in node:
                    if p:
                        if p.left:
                            temp.append(p.left)
                        if p.right:
                            temp.append(p.right)
                l = len(node)
                for i in range(0, l - 1):
                    node[i].next = node[i+1]
                node = temp
    

    相关文章

      网友评论

        本文标题:每个节点的右向指针

        本文链接:https://www.haomeiwen.com/subject/dazugftx.html