• 程序员面试金典-面试题 04.03. 特定深度节点链表


    题目:

    给定一棵二叉树,设计一个算法,创建含有某一深度上所有节点的链表(比如,若一棵树的深度为 D,则会创建出 D 个链表)。返回一个包含所有深度的链表的数组。

    示例:

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

      1
      /
       2   3
      /     
       4   5    7
      /
    8

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

    分析:

    层序遍历,将每层的节点构建成一个链表,将头节点加入到数组中即可。

    程序:

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    /**
     * Definition for singly-linked list.
     * public class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode(int x) { val = x; }
     * }
     */
    class Solution {
        public ListNode[] listOfDepth(TreeNode tree) {
            List<ListNode> res = new ArrayList<>();
            Queue<TreeNode> queue = new LinkedList<>();
            queue.add(tree);
            while(!queue.isEmpty()){
                int len = queue.size();
                ListNode dummyHead = new ListNode(-1);
                ListNode p = dummyHead;
                for(int i = 0; i < len; ++i){
                    TreeNode node = queue.poll();
                    p.next = new ListNode(node.val);
                    p = p.next;
                    if(node.left != null) queue.add(node.left);
                    if(node.right != null) queue.add(node.right);
                }
                res.add(dummyHead.next);
            }
            //return res.stream().toArray(ListNode[]::new);
            return res.toArray(new ListNode[0]);
        }
    }
  • 相关阅读:
    软件课程设计(3)
    软件课程设计(2)
    软件课程设计(1)
    继往开来第五天
    勤勤恳恳第四天
    撸起袖子第三天
    厉兵秣马第二天
    项目初定第一天
    Magic-Club第五天
    Magic-Club第四天
  • 原文地址:https://www.cnblogs.com/silentteller/p/12426805.html
Copyright © 2020-2023  润新知