[Leetcode Week15]Populating Next Right Pointers in Each Node

Populating Next Right Pointers in Each Node 題解

原創文章,拒絕轉載

題目來源:https://leetcode.com/problems/populating-next-right-pointers-in-each-node/description/


Description

Given a binary tree


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

Populate each next pointer to point to its next right node. If there is no next right node, the next pointer should be set to NULL.

Initially, all next pointers are set to NULL.

Note:

  • You may only use constant extra space.
  • You may assume that it is a perfect binary tree (ie, all leaves are at the same level, and every parent has two children).

Example

Given the following perfect binary tree,

1/  \2    3/ \  / \4  5  6  7

After calling your function, the tree should look like:

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

Solution


class Solution {
private:void connectNode(vector<TreeLinkNode*>& v) {int size = v.size();for (int i = 0; i <= size - 2; i++) {v[i] -> next = v[i + 1];}}
public:void connect(TreeLinkNode *root) {if (root == NULL)return;int levelNodeNum = 1;int curLevelNodeNum = 0;queue<TreeLinkNode*> q;vector<TreeLinkNode*> v;q.push(root);while (!q.empty()) {TreeLinkNode* node = q.front();q.pop();v.push_back(node);if (node -> left != NULL)q.push(node -> left);if (node -> right != NULL)q.push(node -> right);curLevelNodeNum++;if (curLevelNodeNum == levelNodeNum) {levelNodeNum *= 2;curLevelNodeNum = 0;connectNode(v);v.clear();}}}
};

解題描述

這道題是關于二叉樹層次遍歷問題的變種。題目給出的二叉樹是完全二叉樹,所以可以提前算出每一層的節點數目,因此來說還是相對比較容易的。所以基本的解決辦法是,使用一個隊列來存放節點。最開始將根節點加入隊列。每次從隊首取出一個節點,將其子節點加入隊尾。然后使用一個計數變量來計算當前層次上已經加入隊列的節點數目。一旦達到該層次的節點數目總和就對該層的節點進行next連接。

轉載于:https://www.cnblogs.com/yanhewu/p/8041064.html

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

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

相關文章

php 數組 1 開始,php數組使用1

1、array_values($arr) 將數組轉換成索引數組$arr1 [id>10,name>楊過,sex>male,salary>8900];echo .var_export(array_values($arr1),true).;2、array_column($arr,$col,$boll); 獲取多維數組的列表組成的數組。$arr2 [];$arr2 [[id>10,name>楊過,sex>…

印度光伏巨頭Adani與華為簽署500MW采購合同

日前&#xff0c;印度光伏巨頭Adani與華為簽訂了采購合同。Adani未來一年的項目全部采用華為FusionSolar3.0智能光伏解決方案&#xff0c;首期500MW采購合同已經簽署&#xff0c;將采購最新的智能光伏控制器&#xff08;組串逆變器&#xff09;SUN2000-43KTL、數據采集器SmartL…

宣布 .NET MAUI 支持 .NET 7 RC 2

點擊上方藍字關注我們&#xff08;本文閱讀時間&#xff1a;6分鐘)支持 .NET 7 Release Candidate 2 的 .NET 多平臺應用程序 UI (MAUI) 現在可在 Windows 和 Mac 上的 Visual Studio 17.4 Preview 4 中使用。RC2 的主要主題是質量和對帶有 iOS 16 的 Xcode 14 的 .NET 支持。此…

linux c文件操作,Linux C 文件的輸入/輸出操作

10.1 文件I/O操作概述在Linux系統中&#xff0c;文件I/O操作可以分為兩類&#xff0c;一類是基于文件描述符的I/O操作&#xff0c;另一類是基于數據流的I/O操作。10.1.1 文件描述符簡介在文件操作一章中&#xff0c;也經常提到文件描述符這個概念。所謂文件描述符&#xff0c;就…

個人中心標簽頁導航

新頁面userbase.html,用<ul ><li role"presentation"> 實現標簽頁導航。<ul class"nav nav-tabs"> <li role"presentation"><a href"#">Home</a></li> <li role"presentation&qu…

智慧城市免費WiFi覆蓋怎么實施?武邑開啟智慧生活模式

“真沒想到武邑這個國家級貧困縣也能夠隨地使用無線網絡&#xff0c;我初次考察就喜歡上了這里。”準備前來武邑縣投資的客商王先生說。日前&#xff0c;隨著縣城廣場、商場等公共場所的免費WiFi覆蓋&#xff0c;及移動電子商務借勢O2O的快速發展&#xff0c;衡水市武邑縣正在逐…

Uno開發的小游戲

大家好&#xff0c;我是沙漠盡頭的狼。剛在微信群里逛&#xff0c;有網友發了Uno的在線小游戲&#xff0c;站長覺得不錯&#xff0c;簡單分享下&#xff1a;群聊漲見識Uno是什么&#xff1f;使用 C# 和 WinUI 實現像素完美的多平臺應用程序&#xff0c;用于構建適用于 Windows、…

sqlplus命令行登錄oracle數據庫的N種方法盤點

歡迎訪問我的個人博客IT廢柴&#xff0c;本文永久鏈接移至&#xff1a;sqlplus命令行登錄oracle數據庫的N種方法盤點 sqlplus有幾種登陸方式Oracle數據庫&#xff0c; 比如&#xff1a; 1.以操作系統權限認證的oracle sys管理員登陸 C: > sqlplus "/as sysdba" 2…

拉美光伏新興市場熱潮將至

國際油價下滑對油氣生產國的影響是不言而喻的&#xff0c;受此拖累&#xff0c;可再生能源產業發展也承受了一定壓力。然而&#xff0c;在多國擁有油氣資源的拉美地區&#xff0c;情況卻恰恰相反&#xff0c;許多國家的可再生能源產業非但沒有受低油價拖累&#xff0c;反而快速…

linux下常見生產腳本,不看后悔的Linux生產服務器Shell腳本分享(2)

一、MySQL的熱備份腳本這是MySQL的備份方式之一&#xff0c;腳本如下&#xff1a;#!/bin/bashPATH/usr/local/sbin:/usr/bin:/bin# The Directory of BackupBACKDIR/usr/mysql_backup# The Password of MySQLROOTPASSpassword# Remake the Directory of Backuprm -rf $BACKDIRm…

兄弟連學python——MongoDB相關

1.常用的命令 show dbs 顯示數據庫列表use dbname 進入dbname數據庫&#xff0c;大小寫敏感&#xff0c;沒有這個數據庫也不要緊show collections 顯示數據庫中的集合&#xff0c;相當于表格2.創建&新增 db.users.save({"name":"lecaf"}) …

WPF-12 路由事件之二

WPF 為我們提供了許多不同的事件處理機制——它們是冒泡、隧道和直接的。這些都稱為路由事件直接事件直接在事件源上處理&#xff0c;這個有點像WinForms中的按鈕OnClick事件&#xff0c;直接在事件處理程序中處理業務冒泡事件當事件沒有被元素&#xff08;比如一個文本框&…

對01背包的分析與理解(圖文)

首先謝謝Christal_R的文章(點擊轉到鏈接)讓我學會01背包 本文較長&#xff0c;但是長也意味著比較詳細&#xff0c;希望您可以耐心讀完。 題目: 現在有一個背包(容器),它的體積(容量)為V,現在有N種物品(每個物品只有一個),每個物品的價值W[i]和占用空間C[i]都會由輸入給出,現在…

linux內核源碼剖析 博客,【Linux內存源碼分析】頁面遷移

頁面遷移其實是伙伴管理算法中的一部分&#xff0c;鑒于其特殊性&#xff0c;特地另行分析。它是2007年的時候&#xff0c;2.6.24內核版本開發時&#xff0c;新增碎片減少策略(the fragmentation reduction strategy)所引入的。該策略也稱之為反碎片技術(anti-gragmentation)。…

360的下一代SOC是這個樣子的

幾乎所有大型企業或機構的IT系統中&#xff0c;都會有安全運營中心(SOC)&#xff0c;它是網絡安全防護體系從設備部署到系統建設&#xff0c;再到統一管理&#xff0c;這一發展過程的自然產物。但在國內的實際應用中&#xff0c;SOC的問題多多。 首先是數據類型不全&#xff0c…

【轉載】利用scipy.misc等庫對jpg以及png等圖像數據預處理(用于深度學習喂數據)...

http://blog.csdn.net/qq_16949707/article/details/56306720 轉載于:https://www.cnblogs.com/tenderwx/p/8057599.html

2018年下半年網絡公式考試案例分析真題

閱讀以下說明&#xff0c;回答問題1至問題3&#xff0c;將解答填入答題紙對應的解答欄內。【說明】某公司網絡劃分為兩個子網&#xff0c;其中設備A是DHCP服務器&#xff0c;如圖3-1所示。 【問題1】(6分&#xff0c;每空2分)DHCP在分配IP地址時使用 (1) 的方式&#xff0c; 而…

哪一個不是linux常用的shell,Linux下查看使用的是哪種shell的方法匯總

查看當前發行版可以使用的shell復制代碼代碼如下:[rootlocalhost ~]$ cat /etc/shells/bin/sh/bin/bash/sbin/nologin查看當前使用的shell方法一、最常用的查看shell的命令&#xff0c;但不能實時反映當前shell復制代碼代碼如下:[rootlocalhost ~]$ echo $SHELL/bin/bash二、下…

企業建設呼叫中心需要考慮哪些因素

呼叫中心發展至今&#xff0c;它的意義早已不是90年代末,只是簡單地解決客戶客服系統的要求。現在的呼叫中心有了新的使命&#xff0c;比如拓展成為一個信息服務中心&#xff0c;或者成為一個營銷中心。客戶如何能通過這樣的手段&#xff0c;使企業與其他的企業之間形成差異化的…

【單片機入門】(三)應用層軟件開發的單片機學習之路-----UART串口通訊和c#交互...

本文由網友投稿。作者&#xff1a;陳顯達原文標題&#xff1a;【單片機入門】(三)應用層軟件開發的單片機學習之路-----UART串口通訊和c#交互原文鏈接&#xff1a;https://www.cnblogs.com/1996-Chinese-Chen/p/16826558.html引言在第一章博客中&#xff0c;我們講了Arduino對E…