【LeetCode】剑指 Offer 32 - III. 从上到下打印二叉树 III
package offer;
import java.util.ArrayList;
import java.util.Deque;
import java.util.LinkedList;
import java.util.List;
class TreeNode{
int val;
TreeNode left;
TreeNode right;
TreeNode(){};
TreeNode(int x){
val = x;
}
}
public class Solution32 {
public static void main(String[] args) {
TreeNode node1 = new TreeNode(3);
TreeNode node2 = new TreeNode(9);
TreeNode node3 = new TreeNode(20);
TreeNode node4 = new TreeNode(15);
TreeNode node5 = new TreeNode(7);
node1.left = node2;
node1.right = node3;
node3.left = node4;
node3.right = node5;
Solution32 solution = new Solution32();
System.out.println(solution.method(node1));
}
private List<List<Integer>> method(TreeNode root){
List<List<Integer>> res = new ArrayList<>();
Deque<TreeNode> deque = new LinkedList<>();
if (root != null) deque.addFirst(root);
List<Integer> temp = new ArrayList<>();
TreeNode node = new TreeNode();
while(!deque.isEmpty()){
temp = new ArrayList<>();
for(int i = deque.size(); i > 0; i--){
node = deque.removeFirst();
temp.add(node.val);
if(node.left != null) deque.addLast(node.left);
if(node.right != null) deque.addLast(node.right);
}
res.add(temp);
if(deque.isEmpty()) break;
temp = new ArrayList<>();
for(int i = deque.size(); i > 0; i--){
node = deque.removeLast();
temp.add(node.val);
if(node.right != null) deque.addFirst(node.right);
if(node.left != null) deque.addFirst(node.left);
}
res.add(temp);
}
return res;
}
}