2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
वृक्षस्य श्रेणीबद्धं भ्रमणं एकं भ्रमणविधिं निर्दिशति यत् वृक्षस्य सर्वाणि नोड्स् श्रेणीक्रमेण भ्रमति । विशिष्टानि सोपानानि यथा सन्ति ।
स्तरपरिभ्रमणस्य विषये सम्बन्धितज्ञानबिन्दवः : १.
विचारं:
एषः विचारः पङ्क्तिप्रयोगद्वारा श्रेणीबद्धयात्रायाः कार्यान्वयनस्य कुञ्जी अस्ति । प्रत्येकं नोडस्य पङ्क्तिविच्छेदनं कृत्वा अभिगमनं भवति चेत् तस्य बालनोडाः पङ्क्तिबद्धाः भवन्ति, अतः श्रेणीक्रमेण अभिगमः सुनिश्चितः भवति ।
उदाहरण:
102. द्विचक्रीयवृक्षस्य स्तरक्रमपरिभ्रमणम्
द्विचक्रीयवृक्षस्य मूलग्रन्थिं ददातुroot
, तस्य नोड् मूल्यं प्रत्यागच्छतिस्तर-क्रम-परिभ्रमणम् . (अर्थात् सर्वेषां नोड्स् स्तर-स्तरं, वामतः दक्षिणत: भ्रमणं कुर्वन्तु)।
उदाहरणम् १ : १.
输入:root = [3,9,20,null,null,15,7] 输出:[[3],[9,20],[15,7]]
उदाहरणम् २ : १.
输入:root = [1] 输出:[[1]]
उदाहरणम् ३ : १.
输入:root = [] 输出:[]
- // 层序遍历二叉树并返回结果列表
- public List<List<Integer>> levelOrder(TreeNode root) {
- List<List<Integer>> lists = new ArrayList<>(); // 用于存储层序遍历结果的列表
- Queue<TreeNode> queue = new LinkedList<>(); // 辅助队列,用于层序遍历
- if (root == null) {
- return new ArrayList<List<Integer>>(); // 如果根节点为空,直接返回空列表
- }
- queue.add(root); // 将根节点加入队列
- while (!queue.isEmpty()) {
- int size = queue.size(); // 当前层的节点数
- List<Integer> list = new ArrayList<>(); // 用于存储当前层节点值的列表
- for (int i = 0; i < size; i++) {
- TreeNode node = queue.poll(); // 出队列
- list.add(node.val); // 将节点值加入当前层列表
- // 将当前节点的左右子节点加入队列,以便遍历下一层
- if (node.left != null) {
- queue.add(node.left);
- }
- if (node.right != null) {
- queue.add(node.right);
- }
- }
- lists.add(list); // 将当前层的节点值列表加入最终结果列表
- }
- return lists; // 返回层序遍历结果列表
- }