当前位置:   article > 正文

Java 链表 求二叉树的锯齿层遍历 LinkedList用法 面试、笔试 高频知识点 Leetcode_java linkedlist遍历二叉树

java linkedlist遍历二叉树

话不多说,直接上代码:

  1. class Solution {
  2. public List<List<Integer>> zigzagLevelOrder(TreeNode root) {
  3. // 创建一个链表,存储最终结果
  4. List<List<Integer>> ans = new LinkedList<List<Integer>>();
  5. if(root == null){
  6. return null;
  7. }
  8. // 队列,用来层次遍历节点
  9. Queue<TreeNode> queue = new LinkedList<TreeNode>();
  10. queue.offer(root);
  11. // isOrderLeft 这个用来判断遍历每层的方向,从左到右
  12. // 基数层是从左往右(根节点是从0层开始), 偶数层是从右往左移动
  13. boolean isOrderLeft = true;
  14. while(!queue.isEmpty()){
  15. // 用来存储每一层的节点
  16. Deque<Integer> deque = new LinkedList<Integer>();
  17. int size = queue.size();
  18. for(int i = 0; i < size; i++){
  19. TreeNode currNode = queue.poll();
  20. if(isOrderLeft){
  21. deque.addLast(currNode.val);
  22. }else{
  23. deque.addFirst(currNode.val);
  24. }
  25. if(currNode.left != null){
  26. queue.offer(currNode.left);
  27. }
  28. if(currNode.right != null){
  29. queue.offer(currNode.right);
  30. }
  31. }
  32. ans.add(new LinkedList<Integer>(deque));
  33. isOrderLeft = !isOrderLeft;
  34. }
  35. return ans;
  36. }
  37. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/863551
推荐阅读
相关标签
  

闽ICP备14008679号