题解 | JAVA #从下到上打印二叉树# [P3]

从下到上打印二叉树

http://www.nowcoder.com/practice/ed982e032ff04d6a857b4cb4e6369d04

正常level-order traversal,每层到一个array里 反向打印就用Linklist的descendingIterator, 或者用stack存每层的值就行。\

import java.util.*;

public class Solution {
    public int[][] levelOrderBottom (TreeNode root) {
      if (root == null) return new int[0][];
      LinkedList<int[]> list = new LinkedList<>();
      Queue<TreeNode> q = new LinkedList<>();
      
      q.offer(root);
      while (!q.isEmpty()) {
        int levelSize = q.size();
        int[] level = new int[levelSize];
        for (int i = 0; i < levelSize; ++i) {
          TreeNode head = q.poll();
          if (head.left != null) q.offer(head.left);
          if (head.right != null) q.offer(head.right);
          
          level[i] = head.val;
        }
        list.add(level);
      }
      
      Iterator<int[]> reverseIt = list.descendingIterator();
      int[][] ans = new int[list.size()][];
      int i = 0;
      while (reverseIt.hasNext()) {
        ans[i++] = reverseIt.next();
      }
      return ans;
    }
}
全部评论
博主你好,为什么我list用List提示cannot find symbol symbol: method descendingIterator() 按网上建议用了Deque才解决,但确实看到API文档中LinkedList中有descendingIterator()
点赞 回复 分享
发布于 2024-04-16 10:37 浙江

相关推荐

牛客765689665号:没有实习是硬伤,央国企看学历
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务