package jianzhiOffer;
import java.util.ArrayList;
/**
* 从上往下打印出二叉树的每个节点,同层节点从左至右打印。
*
* @author user 思路:本题中我们利用层序遍历的思想,首先将树中所有节点 按照一层从左到右依次保存到ArrayList中,然后在逐一取出
* 节点的值添加到集合中,最后返回集合。
*/
class TreeNode3 {
int val = 0;
TreeNode3 left = null;
TreeNode3 right = null;
public TreeNode3(int val) {
this.val = val;
}
}
public class ch22 {
int i = 0;
int count = 0;
boolean flag = true;
ArrayList<Integer> arr = new ArrayList<>();
public ArrayList<Integer> PrintFromTopToBottom(TreeNode3 root) {
ArrayList<TreeNode3> node = new ArrayList<>();
if (root != null) {
node.add(root);
while (flag) {
if (root.left != null) {
node.add(root.left);
count++;
}
if (root.right != null) {
node.add(root.right);
count++;
}
// i总是一层一层从左往右的移动
if (i < count) {
i++;
root = node.get(i);
} else {
flag = false;
}
}
}
for (int i = 0; i < node.size(); i++) {
arr.add(node.get(i).val);
}
return arr;
}
}
剑指offer22
原文:http://blog.51cto.com/12222886/2063077