二叉樹練習

102. 二叉樹的層序遍歷 - 力扣(LeetCode)

使用隊列進行層序遍歷。

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public List<List<Integer>> levelOrder(TreeNode root) {List<List<Integer>>ans = new ArrayList<>();Queue<TreeNode>q = new LinkedList<>();if(root == null){return ans;}q.offer(root);int num = 1;while(!q.isEmpty()){List<Integer>temp = new ArrayList<>();num = q.size();while(num != 0){TreeNode t = q.poll();temp.add(t.val);if(t.left != null){q.offer(t.left);}if(t.right != null){q.offer(t.right);}num--;}ans.add(temp);}return ans;}
}

107. 二叉樹的層序遍歷 II - 力扣(LeetCode)

在上一題的基礎上,翻轉一下ans

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public List<List<Integer>> levelOrderBottom(TreeNode root) {List<List<Integer>>ans = new ArrayList<>();Queue<TreeNode>q = new LinkedList<>();if(root == null){return ans;}q.offer(root);int num = 1;while(!q.isEmpty()){List<Integer>temp = new ArrayList<>();num = q.size();while(num != 0){TreeNode t = q.poll();temp.add(t.val);if(t.left != null){q.offer(t.left);}if(t.right != null){q.offer(t.right);}num--;}ans.add(temp);}Collections.reverse(ans);return ans;}
}

199. 二叉樹的右視圖 - 力扣(LeetCode)

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public List<Integer> rightSideView(TreeNode root) {List<Integer>ans = new ArrayList<>();Queue<TreeNode>q = new LinkedList<>();if(root == null){return ans;}q.offer(root);int num = 1;while(!q.isEmpty()){num = q.size();while((num - 1) != 0){TreeNode temp = q.poll();if(temp.left != null){q.offer(temp.left);}if(temp.right != null){q.offer(temp.right);}num--;}TreeNode t = q.poll();if(t.left != null){q.offer(t.left);}if(t.right != null){q.offer(t.right);}ans.add(t.val);}return ans;}
}

637. 二叉樹的層平均值 - 力扣(LeetCode)

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public List<Double> averageOfLevels(TreeNode root) {List<Double>ans = new ArrayList<>();Queue<TreeNode>q = new LinkedList<>();if(root == null){return ans;}q.offer(root);int num = 1;while(!q.isEmpty()){num = q.size();int tnum = num;long ad = 0;while(num != 0){TreeNode temp = q.poll();if(temp.left != null){q.offer(temp.left);}if(temp.right != null){q.offer(temp.right);}ad += temp.val;num--;}double cur = (double)ad / (double)tnum;ans.add(cur);}return ans;}
}

429. N 叉樹的層序遍歷 - 力扣(LeetCode)

/*
// Definition for a Node.
class Node {public int val;public List<Node> children;public Node() {}public Node(int _val) {val = _val;}public Node(int _val, List<Node> _children) {val = _val;children = _children;}
};
*/class Solution {public List<List<Integer>> levelOrder(Node root) {List<List<Integer>>ans = new ArrayList<>();if(root == null){return ans;}Queue<Node>q = new LinkedList<>();q.offer(root);while(!q.isEmpty()){List<Integer>temp = new ArrayList<>();int num = q.size();while(num != 0){Node t = q.poll();temp.add(t.val);List<Node>list = t.children;for(Node n : list){q.offer(n);}num--;}ans.add(temp);}return ans;}
}

515. 在每個樹行中找最大值 - 力扣(LeetCode)

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public List<Integer> largestValues(TreeNode root) {List<Integer>ans = new ArrayList<>();if(root == null){return ans;}Queue<TreeNode>q = new LinkedList<>();q.offer(root);while(!q.isEmpty()){int num = q.size();int max = Integer.MIN_VALUE;while(num != 0){TreeNode temp = q.poll();if(temp.left != null){q.offer(temp.left);}if(temp.right != null){q.offer(temp.right);}max = max > temp.val ? max : temp.val;num--;}ans.add(max);}return ans;}
}

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

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

相關文章

深入了解 Git Merge:用法、類型與合并沖突處理

文章目錄 深入了解 Git Merge&#xff1a;用法、類型與合并沖突處理一、Git Merge 是什么&#xff1f;二、Git Merge 的工作流程四、Git Merge 的類型1. Fast-forward Merge&#xff08;快進合并&#xff09;2. Three-way Merge&#xff08;三方合并&#xff09; 四、Git Merge…

DeepSeek助力Vue開發:打造絲滑的鍵盤快捷鍵

DeepSeek助力Vue開發&#xff1a;打造絲滑的鍵盤快捷鍵 大家好&#xff0c;給大家分享一篇文章&#xff01;并提供具體代碼實現幫助大家深入理解&#xff0c;徹底掌握&#xff01;如果能幫助到大家或給大家一些靈感和啟發&#xff0c;歡迎收藏關注。&#x1f495;&#x1f495;…

FreeRTOS 隊列結構體 xQUEUE 深度解析

一、核心成員與功能設計 FreeRTOS 的隊列結構體 xQUEUE 是任務間通信&#xff08;IPC&#xff09;的核心數據結構&#xff0c;通過統一的設計支持隊列、信號量、互斥量等多種同步機制。其設計體現了 ?**"數據拷貝 結構復用"** 的理念&#xff0c;兼顧輕量化與擴展…

斜對角線的應用

引入 題目描述 經典應用&#xff1a;八皇后問題 dg和udg數組的解釋 對角線 d g [ u i ] d g [ u i ] dg[ui]dg[ui] dg[ui]dg[ui]&#xff0c;反對角線 u d g [ n ? u i ] u d g [ n ? u i ] udg[n?ui]udg[n?ui] udg[n?ui]udg[n?ui]中的下標 u i ui ui和 n ? …

簡單聊聊Oracle和MySQL數據庫的區別和使用場景

對于IT的技術人員&#xff0c;MySQL是非常熟悉的開源數據庫&#xff0c;在各個行業被廣泛應用。但是對于Oracle數據庫&#xff0c;很多專業的IT從業人員不太了解&#xff0c;今天就來聊一聊Oracle和MySQL的一些區別。 1. 使用場景 首先MySQL是在各種IT公司或者非IT公司廣泛應用…

STM32學習筆記之存儲器映射(原理篇)

&#x1f4e2;&#xff1a;如果你也對機器人、人工智能感興趣&#xff0c;看來我們志同道合? &#x1f4e2;&#xff1a;不妨瀏覽一下我的博客主頁【https://blog.csdn.net/weixin_51244852】 &#x1f4e2;&#xff1a;文章若有幸對你有幫助&#xff0c;可點贊 &#x1f44d;…

mapbox V3 新特性,添加三維球鷹眼圖控件

????? 主頁: gis分享者 ????? 感謝各位大佬 點贊?? 收藏? 留言?? 加關注?! ????? 收錄于專欄:mapbox 從入門到精通 文章目錄 一、??前言1.1 ??mapboxgl.Map 地圖對象1.2 ??mapboxgl.Map style屬性1.3 ??mapbox-gl-globe-minimap 三維球體鷹眼…

MySQL-調優策略-SQL語句

引言 架構調優&#xff0c;在系統設計時首先需要充分考慮業務的實際情況&#xff0c;是否可以把不適合數據庫做的事情放到數據倉庫、搜索引擎或者緩存中去做&#xff1b;然后考慮寫的并發量有多大&#xff0c;是否需要采用分布式&#xff1b;最后考慮讀的壓力是否很大&#xf…

6502電氣集中聯鎖道岔控制電路的工作過程

6502電氣集中聯鎖道岔控制電路的工作過程主要包括選擇進路、轉換道岔、鎖閉進路、開放信號和解鎖進路等環節&#xff0c;以下是其具體工作過程模擬&#xff1a; 選擇進路&#xff1a; 按壓按鈕&#xff1a;操作人員在控制臺上按壓進路兩端的按鈕&#xff0c;如始端按鈕和終端按…

DS足球監控【比分直播】監控,釘釘實現自動提醒

文章目錄 目標網站分析詳細分析提醒工具代碼截圖成功提示對爬蟲、逆向感興趣的同學可以查看文章,一對一小班教學:https://blog.csdn.net/weixin_35770067/article/details/142514698 目標網站分析 https://live.dszuqiu.com/監控目標:實現固定時間內對比分監控,實現自動下單…

基于ssm的醫院預約掛號系統

一、系統架構 前端&#xff1a;jsp | bootstrap | jquery | css | ajax 后端&#xff1a;spring | springmvc | mybatis 環境&#xff1a;jdk1.8 | mysql | maven | tomcat 二、代碼及數據 三、功能介紹 01. 注冊 02. 登錄 03. 首頁 04. 醫院掛號 05. …

華為OD機試A卷 - 快遞業務站 計算快遞主站點(C++ Java JavaScript Python )

最新華為OD機試 真題目錄:點擊查看目錄 華為OD面試真題精選:點擊立即查看 題目描述 快遞業務范圍有 N 個站點,A 站點與 B 站點可以中轉快遞,則認為 A-B 站可達, 如果 A-B 可達,B-C 可達,則 A-C 可達。 現在給 N 個站點編號 0、1、…n-1,用 s[i][j]表示 i-j 是否可…

三維動態規劃-LeetCode3418. 機器人可以獲得的最大金幣數

太爽了&#xff01;做完這道題&#xff0c;讓我感覺就像是斬殺了一條大龍&#xff01;歷時72天&#xff0c;分3次花掉30小時。終獲突破&#xff01; 零、題目 3418. 機器人可以獲得的最大金幣數 給你一個 m x n 的網格。一個機器人從網格的左上角 (0, 0) 出發&#xff0c;目…

相生、相克、乘侮、復雜病機及對應的臟腑功能聯系

一、五行相生關系&#xff08;母子關系&#xff09; 五行生序臟腑關系生理表現舉例木生火肝&#xff08;木&#xff09;滋養心&#xff08;火&#xff09;肝血充足則心血旺盛火生土心&#xff08;火&#xff09;溫煦脾&#xff08;土&#xff09;心陽充足則脾胃運化功能正常土…

Ubuntu22.04搭建freeradius操作說明

Ubuntu22.04搭建freeradius操作說明 更新依賴庫 sudo apt update sudo apt install build-essential sudo apt install libtalloc-dev sudo apt install libssl-dev 按照freeradius sudo apt install freeradius 修改freeradius配置 文件路徑如下 /etc/freeradius/3.…

es中安裝ik分詞器

在線安裝ik插件&#xff08;較慢&#xff09; docker exec -it es /bin/bash ./bin/es-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.12.1/elasticsearch-analysis-ik-7.12.1.zip 看到報錯了&#xff0c;我訪問一下。就是沒有了…

最大字段和問題 C++(窮舉、分治法、動態規劃)

問題描述 給定由n個整數&#xff08;包含負整數&#xff09;組成的序列a1,a2,…,an&#xff0c;求該序列子段和的最大值。規定當所有整數均為負值時定義其最大子段和為0 窮舉法 最簡單的方法就是窮舉法&#xff0c;用一個變量指示求和的開始位置&#xff0c;一個變量指示結束…

如何理解三極管截至區、放大區、飽和區

一、 三極管符號&#xff1a; NPN : PNP: 二、Vce、與Ic曲線圖 1、截至區&#xff1a;ib很小的時候就是截至區。因為Ib很小的時候等價于Ub很小&#xff0c;Ub如果不足以達到0.7V PN結就不會導通&#xff0c;所以三極管就…

電腦上我的windows目錄下,什么是可以刪除的

在Windows系統目錄&#xff08;通常是C:\Windows&#xff09;中&#xff0c;大部分文件和文件夾都是系統運行所必需的&#xff0c;隨意刪除可能導致系統崩潰或程序無法運行。不過&#xff0c;部分文件可以安全清理。以下是詳細指南&#xff1a; 可安全清理的內容 臨時文件&…

工作中遇到的spark SQL小問題:包含某個或某些字符的條件

今天又來總結工作中遇到的問題了&#xff0c;今天是SQL&#xff0c;spark引擎 需求描述&#xff0c;篩選渠道包含”線上化“的數據 也就是討論where里面的這個篩選條件怎么寫 一般起手都是 where QD like %線上化%‘ 學習了其他的寫法: 1.INSTR函數 where INSTR(QD,&quo…