特定深度节点链表
题目取自《程序员面试金典》4.3
思路
类似广度优先遍历,通过遍历每一层,并逐层添加相应节点
错误来源
没有正确的处理链表头节点的位置,因为力扣题目里没有直接使用LinkedList类,而是使用了最基本的节点,所以需要使用一个指针对头节点进行保存,另一个指针进行添加操作。
错误示范
1 2 3 4 5 6 7 8 9 10 11 12 13
   | public ListNode[] addLists(ListNode[] listOfLevel, int index, TreeNode tree) {         if (tree == null) return listOfLevel;         ListNode temp = listOfLevel[index];         while (temp!= null)         {             temp = temp.next;         }         temp = new ListNode(tree.val);         temp = temp.next;                      return listOfLevel; }
   | 
 
正确答案
先通过c#,list类对每一层进行节点的创建,设置计数器对每一层的节点数量进行控制,最后再创建答案的数组。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
   | public ListNode[] ListOfDepth(TreeNode tree) {     if (tree == null) return null;     List<ListNode> listOfLevels = new List<ListNode>();     int curr = 1;     int next = 0;     Queue<TreeNode> queue = new Queue<TreeNode>();     queue.Enqueue(tree);     ListNode node = new ListNode(0);     ListNode find = node;     while (queue.Count > 0)     {         TreeNode temp = queue.Dequeue();         node.next = new ListNode(temp.val);         node = node.next;         curr--;         if (temp.left != null)         {             queue.Enqueue(temp.left);             next++;         }         if (temp.right != null)         {             queue.Enqueue(temp.right);             next++;         }         if(curr == 0)         {             curr = next;             next = 0;             listOfLevels.Add(find.next);             node = new ListNode(0);             find = node;         }     }
 
      return listOfLevels.ToArray(); }
   |