20201222 二叉樹的鋸齒形層序遍歷
阿新 • • 發佈:2020-12-22
給定一個二叉樹,返回其節點值的鋸齒形層序遍歷。(即先從左往右,再從右往左進行下一層遍歷,以此類推,層與層之間交替進行)。 例如: 給定二叉樹[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回鋸齒形層序遍歷如下: [ [3], [20,9], [15,7] ] 來源:力扣(LeetCode) 連結:https://leetcode-cn.com/problems/binary-tree-zigzag-level-order-traversal 著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。
}
public List<List<Integer>> zigzagLevelOrder(TreeNode root) { List<List<Integer>> ans = new LinkedList<List<Integer>>(); if (root == null) { return ans; } Queue<TreeNode> nodeQueue = new LinkedList<TreeNode>(); nodeQueue.offer(root); boolean isOrderLeft = true; while (!nodeQueue.isEmpty()) { Deque<Integer> levelList = new LinkedList<Integer>(); int size = nodeQueue.size();for (int i = 0; i < size; ++i) { TreeNode curNode = nodeQueue.poll(); if (isOrderLeft) { levelList.offerLast(curNode.val); } else { levelList.offerFirst(curNode.val); } if (curNode.left != null) { nodeQueue.offer(curNode.left); } if (curNode.right != null) { nodeQueue.offer(curNode.right); } } ans.add(new LinkedList<Integer>(levelList)); isOrderLeft = !isOrderLeft; } return ans; }