题目描述:
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
解题思路:
采用二叉树先序遍历的方法来遍历数据,用一个队列来存储遍历的数据,最后注意数据的出队列就行,要注意一个问题,我使用JAVA写的代码queue的初始化不能使用new的方式,因为queue是一个抽象的数据结构,没有办法进行实例化,所以必须采用其他方法进行实例化,我这里采用的是linklist进行实例化。
相关解题代码:
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;
public class Offer {
public static ArrayList<Integer>PrintFromTopToBottom(TreeNode root){
ArrayList<Integer>res=new ArrayList<>();
if(root==null){
return res;
}
Queue<TreeNode>queue=new LinkedList<TreeNode>();
queue.add(root);
while (queue.size()!=0){
root=queue.remove();
res.add(root.val);
if(root.left!=null){
queue.add(root.left);
}
if(root.right!=null){
queue.add(root.right);
}
}
return res;
}
public static void main(String[] args) {
TreeNode oneNode=new TreeNode(1);
TreeNode twoNode=new TreeNode(2);
TreeNode threeNode=new TreeNode(3);
TreeNode fourNode=new TreeNode(4);
TreeNode fiveNode=new TreeNode(5);
oneNode.left=twoNode;
oneNode.right=threeNode;
twoNode.left=fourNode;
twoNode.right=fiveNode;
ArrayList<Integer> result = PrintFromTopToBottom(oneNode);
System.out.println(result);
}
}