题目:
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
思路:
借助队列来存储节点,来实现层遍历的效果
1、先将根节点入队列;
2、将根节点出队列,打印。若如果该结点有子结点,就把该结点的子结点放到队列的末尾;
3、重复步骤2,直到将树遍历完为止,即队列为空。
程序:
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;
class TreeNode{
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val){
this.val = val;
}
}
public class subject22 {
public static ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
Queue<TreeNode> myQueue = new LinkedList<>();//注意Queue是一个接口
ArrayList<Integer> list = new ArrayList<>();
if (root == null)
return list;
myQueue.offer(root);//先将根节点入队列
while(! myQueue.isEmpty()){//一直将队列中所有元素都出队为止
TreeNode tempNode = myQueue.poll();//出队操作
list.add(tempNode.val);
if (tempNode.left != null)//节点的左右子树入队操作
myQueue.offer(tempNode.left);
if (tempNode.right != null)
myQueue.offer(tempNode.right);
}
return list;
}
}