剑指 Offer 32 - I. 从上到下打印二叉树

悠悠 2022-12-09 14:58 187阅读 0赞

题目:
从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。

例如:

  1. 给定二叉树: [3,9,20,null,null,15,7],
  2. 3
  3. / \
  4. 9 20
  5. / \
  6. 15 7
  7. 返回:
  8. [3,9,20,15,7]

提示:

  • 节点总数 <= 1000

题解:

  1. /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */
  2. class Solution {
  3. //用来存在节点
  4. List<ArrayList<Integer>> list = new ArrayList();
  5. public int[] levelOrder(TreeNode root) {
  6. List<Integer> tmp = new ArrayList();
  7. // int len = list.size();
  8. helper(root,0);
  9. //for(int i = 0; i< len;i++)这里的len固定了,不可以这么写
  10. for(int i = 0; i< list.size();i++){
  11. tmp.addAll(list.get(i));
  12. }
  13. //把list转换为数组
  14. int n = tmp.size();
  15. int[] res = new int[n];
  16. for(int i = 0; i< n; i++) {
  17. res[i] = tmp.get(i);
  18. }
  19. return res;
  20. }
  21. public void helper(TreeNode node,int k){
  22. if(node == null) {
  23. return;
  24. }
  25. //k表示层从0开始数的,如果k大于list的长度,表示k已经到了下一层,需要初始化下一层
  26. if(k >= list.size() ) {
  27. list.add(new ArrayList());
  28. }
  29. //把node节点加入到第k层
  30. list.get(k).add(node.val);
  31. helper(node.left,k+1);
  32. helper(node.right,k+1);
  33. }
  34. }

发表评论

表情:
评论列表 (有 0 条评论,187人围观)

还没有评论,来说两句吧...

相关阅读