从上往下打印出二叉树的每个节点,同层节点从左至右打印。
思路:二叉树的层次遍历 ,ArrayList 模拟队列。
public class shu {
//二叉树的层次遍历 ,ArrayList 模拟队列。
public static void main(String[] args) {
TreeNode tn = new TreeNode(4);
TreeNode tn1 = new TreeNode(5);
TreeNode tn2 = new TreeNode(6);
TreeNode tn3 = new TreeNode(7);
TreeNode tn4 = new TreeNode(8);
TreeNode tn5 = new TreeNode(9);
TreeNode tn6 = new TreeNode(10);
tn.left = tn1;
tn.right = tn2;
tn1.left=tn3;
tn1.right=tn4;
tn2.left=tn5;
tn2.right=tn6;
shu s = new shu();
System.out.println(s.PrintFromTopToBottom(tn));
}
public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
TreeNode p = root;
ArrayList<Integer> list = new ArrayList<>();
ArrayList<TreeNode> queue = new ArrayList<>();
if(root==null){
return list;
}
queue.add(p);
while (queue.size() != 0) {
p = queue.remove(0);
list.add(p.val);
if (p.left != null) {
queue.add(p.left);
}
if (p.right != null) {
queue.add(p.right);
}
}
return list;
}
}