关键词搜索

源码搜索 ×
×

2021-09-07

发布2021-09-08浏览273次

详情内容

1.1、题目1

1.2、解法

其实这三道题都是广度遍历二叉树的方式。

通过队列实现,存进数组中返回。

1.3、代码

 
  1. /**
  2. * Definition for a binary tree node.
  3. * public class TreeNode {
  4. * int val;
  5. * TreeNode left;
  6. * TreeNode right;
  7. * TreeNode(int x) { val = x; }
  8. * }
  9. */
  10. class Solution {
  11. public int[] levelOrder(TreeNode root) {
  12. if(root==null) return new int[0];
  13. Queue<TreeNode> queue = new LinkedList<>(){{ add(root);}};
  14. ArrayList<Integer> array = new ArrayList<Integer>();
  15. while(!queue.isEmpty()){
  16. TreeNode node = queue.poll();
  17. array.add(node.val);
  18. if(node.left!=null) queue.add(node.left);
  19. if(node.right!=null) queue.add(node.right);
  20. }
  21. int[]res= new int[array.size()];
  22. for(int i=0;i<array.size();i++){
  23. res[i]=array.get(i);
  24. }
  25. return res;
  26. }
  27. }

2.1、题目2

2.2、解法

这题改了改,数组需要分层次,就在while里定义一个List,到后面存vb.net教程进大的List中返回即可。这题答案是直接copy的~~

2.3、代码

 
  1. /**
  2. * Definition for a binary tree node.
  3. * public class TreeNode {
  4. * int val;
  5. * TreeNode left;
  6. * TreeNode right;
  7. * TreeNode(int x) { val = x; }
  8. * }
  9. */
  10. class Solution {
  11. public List<List<Integer>> levelOrder(TreeNode root) {
  12. Queue<TreeNode> queue = new LinkedList<>();
  13. List<List<Integer>> res = new ArrayList<>();
  14. if(root != null) queue.add(root);
  15. while(!queue.isEmpty()) {
  16. List<Integer> tmp = new ArrayList<>();
  17. for(int i = queue.size(); i > 0; i--) {
  18. TreeNode node = queue.poll();
  19. tmp.add(node.val);
  20. if(node.left != null) queue.add(node.left);
  21. if(node.right != null) queue.add(node.right);
  22. }
  23. res.add(tmp);
  24. }
  25. return res;
  26. }
  27. }

3.1、题目3

3.2、解法

这题是通过两端添加,其实就是上题的稍微修改版本。这题答案是直接copy的~~

3.3、代码

 

  1. class Solution {
  2. public List<List<Integer>> levelOrder(TreeNode root) {
  3. Queue<TreeNode> queue = new LinkedList<>();
  4. List<List<Integer>> res = new ArrayList<>();
  5. if(root != null) queue.add(root);
  6. while(!queue.isEmpty()) {
  7. LinkedList<Integer> tmp = new LinkedList<>();
  8. for(int i = queue.size(); i > 0; i--) {
  9. TreeNode node = queue.poll();
  10. if(res.size() % 2 == 0) tmp.addLast(node.val); // 偶数层 -> 队列头部
  11. else tmp.addFirst(node.val); // 奇数层 -> 队列尾部
  12. if(node.left != null) queue.add(node.left);
  13. if(node.right != null) queue.add(node.right);
  14. }
  15. res.add(tmp);
  16. }
  17. return res;
  18. }
  19. }

本文作者:叫我阿康就好

本文链接:https://www.cnblogs.com/urmkhaos/p/15234316.html

相关技术文章

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载