網(wǎng)站建設(shè)經(jīng)理網(wǎng)站關(guān)鍵詞在哪里看
提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔
前言
提示:這里可以添加本文要記錄的大概內(nèi)容:
提示:以下是本篇文章正文內(nèi)容,下面案例可供參考
一、題目·二叉樹的層序遍歷
1.題目描述
給你二叉樹的根節(jié)點 root ,返回其節(jié)點值的 層序遍歷 。 (即逐層地,從左到右訪問所有節(jié)點)。
示例 1:
輸入:root = [3,9,20,null,null,15,7]
輸出:[[3],[9,20],[15,7]]
示例 2:
輸入:root = [1]
輸出:[[1]]
示例 3:
輸入:root = []
輸出:[]
來源:力扣(LeetCode)
鏈接:https://leetcode.cn/problems/binary-tree-level-order-traversal
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。
2.思路與代碼
2.1 思路
1.創(chuàng)建一個Array類型數(shù)組用來輸出,一個隊列用來儲存每層的結(jié)點
2.先判斷樹是否為空,若樹為空,則輸出空數(shù)組
3.遍歷樹,查找每層結(jié)點,放入一個新的數(shù)組中,遍歷每層結(jié)點結(jié)束之后,將遍歷到的結(jié)點加入輸出的數(shù)組
4.輸出數(shù)組
2.2 代碼
代碼如下(示例):
/*** 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) {//創(chuàng)建一個數(shù)組用來輸出List<List<Integer>> res = new ArrayList<>();//空樹情況if(root == null){return res;}//隊列儲存Queue<TreeNode> q = new ArrayDeque<TreeNode>();q.add(root);while(!q.isEmpty()){//用來記錄某一行ArrayList<Integer> row = new ArrayList(); int size = q.size();//因先進入的是根節(jié)點,故每層節(jié)點多少,隊列大小就是多少for(int i = 0; i < size; i++){TreeNode cur = q.poll();row.add(cur.val);//若是左右孩子存在,則存入左右孩子作為下一個層次if(cur.left != null){q.add(cur.left);} if(cur.right != null){q.add(cur.right);}}//每一層加入輸出res.add(row);}return res;}
}
總結(jié)
提示:這里對文章進行總結(jié):
?