49. Leetcode 117. 填充每个节点的下一个右侧节点指针 II (二叉树-二叉树遍历)
生活随笔
收集整理的這篇文章主要介紹了
49. Leetcode 117. 填充每个节点的下一个右侧节点指针 II (二叉树-二叉树遍历)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
給定一個二叉樹struct Node {int val;Node *left;Node *right;Node *next;
}
填充它的每個 next 指針,讓這個指針指向其下一個右側節(jié)點。如果找不到下一個右側節(jié)點,則將 next 指針設置為 NULL。初始狀態(tài)下,所有?next 指針都被設置為 NULL。進階:你只能使用常量級額外空間。
使用遞歸解題也符合要求,本題中遞歸程序占用的棧空間不算做額外的空間復雜度。示例:輸入:root = [1,2,3,4,5,null,7]
輸出:[1,#,2,3,#,4,5,7,#]
解釋:給定二叉樹如圖 A 所示,你的函數(shù)應該填充它的每個 next 指針,以指向其下一個右側節(jié)點,如圖 B 所示。序列化輸出按層序遍歷順序(由 next 指針連接),'#' 表示每層的末尾。"""
# Definition for a Node.
class Node:def __init__(self, val: int = 0, left: 'Node' = None, right: 'Node' = None, next: 'Node' = None):self.val = valself.left = leftself.right = rightself.next = next
"""class Solution:def connect(self, root: 'Node') -> 'Node':# 層次遍歷迭代if not root:return rootqueue = [root]while queue:size = len(queue)tmp = queue[0]for i in range(1, size):tmp.next = queue[i]tmp = queue[i]for _ in range(size):tmp = queue.pop(0)if tmp.left:queue.append(tmp.left)if tmp.right:queue.append(tmp.right)return root
《新程序員》:云原生和全面數(shù)字化實踐50位技術專家共同創(chuàng)作,文字、視頻、音頻交互閱讀
總結
以上是生活随笔為你收集整理的49. Leetcode 117. 填充每个节点的下一个右侧节点指针 II (二叉树-二叉树遍历)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 47. Leetcode 107 - 二
- 下一篇: 50. Leetcode 105. 从前