#yyds干貨盤點# LeetCode程序員面試金典:特定深度節點鏈表

2022-12-22 19:31:43 來源:51CTO博客

題目:

給定一棵二叉樹,設計一個算法,創建含有某一深度上所有節點的鏈表(比如,若一棵樹的深度為 D,則會創建出 D 個鏈表)。返回一個包含所有深度的鏈表的數組。


(相關資料圖)

示例:

輸入:[1,2,3,4,5,null,7,8]

1

/ \

2 3

/ \ \

4 5 7

/

8

輸出:[[1],[2,3],[4,5,7],[8]]

代碼實現:

class Solution {        ArrayList> res = new ArrayList<>();        public ListNode[] listOfDepth(TreeNode tree) {            dfs(tree, 0);            ListNode[] resArr = new ListNode[res.size()];            for (int j = 0, resSize = res.size(); j < resSize; j++) {                ArrayList deepList = res.get(j);                for (int i = 0; i < deepList.size(); i++) {                    if (i == 0) {                        resArr[j] = deepList.get(i);                    } else {                        deepList.get(i - 1).next = deepList.get(i);                    }                }            }            return resArr;        }        private void dfs(TreeNode tree, int index) {            if (tree == null) return;            if (res.size() <= index) {                res.add(index, new ArrayList<>());            }            ArrayList listNodes = res.get(index);            listNodes.add(new ListNode(tree.val));            dfs(tree.left, index + 1);            dfs(tree.right, index + 1);        }    }

標簽: 設計一個

上一篇:【世界速看料】#yyds干貨盤點# 名企真題專題: 棋子翻轉
下一篇:報道:Dubbo架構設計與源碼解析(三)責任鏈模式