leetcode116. 填充每個節點的下一個右側節點指針

116. 填充每個節點的下一個右側節點指針

難度中等128

給定一個完美二叉樹,其所有葉子節點都在同一層,每個父節點都有兩個子節點。二叉樹定義如下:

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

填充它的每個 next 指針,讓這個指針指向其下一個右側節點。如果找不到下一個右側節點,則將 next 指針設置為?NULL

初始狀態下,所有?next 指針都被設置為?NULL

?

示例:

輸入:{"$id":"1","left":{"$id":"2","left":{"$id":"3","left":null,"next":null,"right":null,"val":4},"next":null,"right":{"$id":"4","left":null,"next":null,"right":null,"val":5},"val":2},"next":null,"right":{"$id":"5","left":{"$id":"6","left":null,"next":null,"right":null,"val":6},"next":null,"right":{"$id":"7","left":null,"next":null,"right":null,"val":7},"val":3},"val":1}輸出:{"$id":"1","left":{"$id":"2","left":{"$id":"3","left":null,"next":{"$id":"4","left":null,"next":{"$id":"5","left":null,"next":{"$id":"6","left":null,"next":null,"right":null,"val":7},"right":null,"val":6},"right":null,"val":5},"right":null,"val":4},"next":{"$id":"7","left":{"$ref":"5"},"next":null,"right":{"$ref":"6"},"val":3},"right":{"$ref":"4"},"val":2},"next":null,"right":{"$ref":"7"},"val":1}解釋:給定二叉樹如圖 A 所示,你的函數應該填充它的每個 next 指針,以指向其下一個右側節點,如圖 B 所示。

?

提示:

  • 你只能使用常量級額外空間。
  • 使用遞歸解題也符合要求,本題中遞歸程序占用的棧空間不算做額外的空間復雜度。

思路:層序遍歷稍微改一下,把相同層的連一下即可。

/*
// Definition for a Node.
class Node {public int val;public Node left;public Node right;public Node next;public Node() {}public Node(int _val) {val = _val;}public Node(int _val, Node _left, Node _right, Node _next) {val = _val;left = _left;right = _right;next = _next;}
};
*/
class Solution {public Node connect(Node root) {if (root == null) {return null;}Queue<Node> Q = new LinkedList<Node>(); Q.add(root);while (Q.size() > 0) {int size = Q.size();for(int i = 0; i < size; i++) {Node node = Q.poll();if (i < size - 1) {node.next = Q.peek();}if (node.left != null) {Q.add(node.left);}if (node.right != null) {Q.add(node.right);}}}return root;}
}

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/444225.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/444225.shtml
英文地址,請注明出處:http://en.pswp.cn/news/444225.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

你的代碼是否按照高內聚、低耦合的原則來設計的?

我們一直強調軟件開發中要按照高內聚、低耦合的設計原則來做代碼結構設計。c語言和c++不同,c語言面向過程、c++面向對象。 真正的項目中,要對業務升級,原來的業務函數需要保留,要保證老的功能繼續維持,不能直接刪除,這時候c語言面向過程,通常使用回調的方法。c+…

leetcode117. 填充每個節點的下一個右側節點指針 II

給定一個二叉樹 struct Node { int val; Node *left; Node *right; Node *next; } 填充它的每個 next 指針&#xff0c;讓這個指針指向其下一個右側節點。如果找不到下一個右側節點&#xff0c;則將 next 指針設置為 NULL。 初始狀態下&#xff0c;所有 next 指針都被…

你擔心大家會濫用的全局變量,大家(包括你自己)一定會濫用

前言 不要使用全局變量的道理大家都懂,基本上在大家學習編程過程中很早就會被教育到,但是有時候我們也會禁不住誘惑用到一些似非實是的全局變量,只不過這些全局變量會穿上馬甲,讓你不會一下看穿它的巨大危害,濫用全局變量會引申帶來其它更為嚴重的結構性系統問題。…

Android Studio下載安裝教程及開發環境搭建

Android Stuio是本次Google io的一大亮點啊&#xff0c;一大早起來就趕緊下載來玩玩了。。。 如果你不幸被墻了&#xff0c;可以去這個帖子下載&#xff0c;我已經上傳到百度盤里面了。 [Android利器]Android Studio下載地址來啰 。。http://www.eoeandroid.com/thread-275380-…

leetcode124. 二叉樹中的最大路徑和

難度困難314 給定一個非空二叉樹&#xff0c;返回其最大路徑和。 本題中&#xff0c;路徑被定義為一條從樹中任意節點出發&#xff0c;達到任意節點的序列。該路徑至少包含一個節點&#xff0c;且不一定經過根節點。 示例 1: 輸入: [1,2,3]1/ \2 3輸出: 6示例 2: 輸入: …

深入剖析阻塞式socket的timeout

前言 網絡編程中超時時間是一個重要但又容易被忽略的問題,對其的設置需要仔細斟酌。 本文討論的是socket設置為阻塞模式,如果socket處于阻塞模式運行時,就需要考慮處理socket操作超時的問題。 所謂阻塞模式,是指其完成指定的操作之前阻塞當前的進程或線程,直到操作…

leetcode165. 比較版本號 超級重要的細節

比較兩個版本號 version1 和 version2。 如果 version1 > version2 返回 1&#xff0c;如果 version1 < version2 返回 -1&#xff0c; 除此之外返回 0。 你可以假設版本字符串非空&#xff0c;并且只包含數字和 . 字符。 . 字符不代表小數點&#xff0c;而是用于分隔數…

游戲服務器緩存系統如何設計

前言 不管是在業界開源領域,還是內部分享中,很少會有專門針對游戲業務特征進行專門設計的組件、類庫或者框架。我們從游戲的客戶端方面來看,一款專業的游戲客戶端引擎,已經是游戲開發的標配,flash,Cocos,Unity,Unreal等,但是服務器端,我們幾乎找不到同樣重量級的產品…

leetcode574. 當選者(SQL)

表: Candidate -------------- | id | Name | -------------- | 1 | A | | 2 | B | | 3 | C | | 4 | D | | 5 | E | -------------- 表: Vote ------------------- | id | CandidateId | ------------------- | 1 | 2…

使用KCP 加速游戲消息,讓全球玩家流暢聯網

定義 kcp協議是傳輸層的一個具有可靠性的傳輸層ARQ協議。 它的設計是為了解決在網絡擁堵情況下tcp協議的網絡速度慢的問題。 kcp力求在保證可靠性的情況下提高傳輸速度。 kcp協議的關注點主要在控制數據的可靠性和提高傳輸速度上面,因此kcp沒有規定下層傳輸協議,一般用udp作為…

leetcode584. 尋找用戶推薦人(SQL)

給定表 customer &#xff0c;里面保存了所有客戶信息和他們的推薦人。 ----------------------- | id | name | referee_id| ----------------------- | 1 | Will | NULL | | 2 | Jane | NULL | | 3 | Alex | 2 | | 4 | Bill | NULL | …

剖析KCP以及KCP在游戲中是如何使用的

親愛的各位讀者你們好,由于前段時間忙于部分項目的重構和優化,未能及時更新文章,不少讀者催更,哈哈,我還是很開心能抽出時間給大家再來分享下kcp的相關技術內幕,以及之前完善自己的網絡庫增加了KCP的客戶端服務器收發支持(結尾會分享封裝的客戶端服務器C++源碼)。 KCP概…

leetcode585. 2016年的投資(SQL)

寫一個查詢語句&#xff0c;將 2016 年 (TIV_2016) 所有成功投資的金額加起來&#xff0c;保留 2 位小數。 對于一個投保人&#xff0c;他在 2016 年成功投資的條件是&#xff1a; 他在 2015 年的投保額 (TIV_2015) 至少跟一個其他投保人在 2015 年的投保額相同。 他所在的城…

暴雪游戲走后,誰來接盤?對網易有何影響?

11月16日&#xff0c;暴雪娛樂公司宣布&#xff0c;由于與網易的現行許可協議將于2023年1月23日到期&#xff0c;將暫停在中國大陸的大部分暴雪游戲服務。這些暴雪游戲包括《魔獸世界》《爐石傳說》《守望先鋒》《星際爭霸》《魔獸爭霸 III&#xff1a;重制版》《暗黑破壞神 II…

leetcode586. 訂單最多的客戶(SQL)

在表 orders 中找到訂單數最多客戶對應的 customer_number 。 數據保證訂單數最多的顧客恰好只有一位。 表 orders 定義如下&#xff1a; | Column | Type | |-------------------|-----------| | order_number (PK) | int | | customer_number | i…

Oracle中刪除一列

ALTER TABLE TBWORKER DROP COLUMN WTUIJIAN;

leetcode595. 大的國家(SQL)

這里有張 World 表 ---------------------------------------------------------------------- | name | continent | area | population | gdp | ---------------------------------------------------------------------- | Afghanistan …

leetcode596. 超過5名學生的課(SQL)

有一個courses 表 &#xff0c;有: student (學生) 和 class (課程)。 請列出所有超過或等于5名學生的課。 例如,表: --------------------- | student | class | --------------------- | A | Math | | B | English | | C | Math | …

leetcode597. 好友申請 I :總體通過率(SQL)

在 Facebook 或者 Twitter 這樣的社交應用中&#xff0c;人們經常會發好友申請也會收到其他人的好友申請。現在給如下兩個表&#xff1a; 表&#xff1a; friend_request | sender_id | send_to_id |request_date| |-----------|------------|------------| | 1 | 2 …

leetcode543. 二叉樹的直徑

給定一棵二叉樹&#xff0c;你需要計算它的直徑長度。一棵二叉樹的直徑長度是任意兩個結點路徑長度中的最大值。這條路徑可能穿過根結點。 示例 : 給定二叉樹 1 / \ 2 3 / \ 4 5 返回 3, 它的長度是路徑 [4,2,1,3] 或者 [5,2,1,3]…