二叉树 10. 填充每个节点的下一个右侧节点指针

题目:给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:
struct Node {
int val;
Node *left;
Node *right;
Node *next;
}
填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。
初始状态下,所有 next 指针都被设置为 NULL。    中等

方法一:BFS  时间复杂度O(N)  空间复杂度O(N)

此方法不在乎数是否完全

def connect(root):
        """
        :type root: Node
        :rtype: Node
        """
        if root is None:
            return None
        
        queue = []
        queue.append(root)
        while queue != []:
            size = len(queue)
            pre = None
            for i in range(size):
                cur = queue.pop(0)
                if pre:
                    pre.next = cur
                pre = cur
                if cur.left:
                    queue.append(cur.left)
                if cur.right:
                    queue.append(cur.right)
        return root

 

posted @ 2022-07-15 11:50  Liang-ml  阅读(25)  评论(0)    收藏  举报