从上往下打印二叉树
题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
题目解析
从题目可以看出是先序遍历方式,先遍历父节点再遍历左子节点最后再遍历右子节点。
代码
public class Solution {
public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
//先需遍历 先父节点再左子节点再右子节点
ArrayList<Integer> listValues = new ArrayList<Integer>();//存储各个节点的值
ArrayList<TreeNode> listNode = new ArrayList<TreeNode>();//存储各个节点
if( root != null){
listNode.add(root);
}
while( listNode.size()>0){
root = listNode.remove(0);
listValues.add(root.val);
TreeNode leftNode = root.left;
TreeNode rightNode = root.right;
if(leftNode !=null ){
listNode.add(leftNode);
}
if(rightNode !=null ){
listNode.add(rightNode);
}
}
return listValues;
}
}