[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/Orio77/LeetCode/master/BinaryTreeLevelOrderTraversal.java [Back]  [Original]

import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public List levelOrder(TreeNode root) {

        List levels = new ArrayList();
        Queue queue1 = new LinkedList();
        Queue queue2 = new LinkedList();
        List levelList;
        if (root != null) {
            queue1.add(root);
            levels.add(List.of(root.val));
        }
        int level = 0;

        while (!queue1.isEmpty() || !queue2.isEmpty()) {
            Queue curQueue = (level % 2 == 0) ? queue1 : queue2;
            levelList = new ArrayList();
            Iterator iterator = curQueue.iterator();
            while (iterator.hasNext()) {
                TreeNode treeNode = iterator.next();
                if (treeNode.left != null) {
                    (curQueue.equals(queue1) ? queue2 : queue1).add(treeNode.left);
                    levelList.add(treeNode.left.val);
                }
                if (treeNode.right != null) {
                    (curQueue.equals(queue1) ? queue2 : queue1).add(treeNode.right);
                    levelList.add(treeNode.right.val);
                }
                iterator.remove();
            }
            if (!levelList.isEmpty()) {
                levels.add(levelList);
            }
            level++;
        }
        return levels;
    }
}

Web Proxy Viewer  |  New URL  |  Original Page