问题:从上往下打印出二叉树的每个节点,同层节点从左至右打印。
思路:
定义两个队列,一个存放节点,一个存放节点值;
先将根节点加入队列 ,再将根节点值加入另外一个队列;
在判断存根节点的队列,依次遍历,判断是否存在左右节点,节点加入一个队列,值加入另一个队列
返回存放值的队列
import java.util.ArrayList;
/**
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
public class Solution {
public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
ArrayList<TreeNode> Root=new ArrayList<> ();
ArrayList<Integer> Value=new ArrayList<> ();
if(root==null)
return Value;
Root.add(root);
Value.add(root.val);
for(int i=0;i<Root.size();i++)
{
//TreeNode Listnode=Root.get(i);
if(Root.get(i).left!=null)
{
Root.add(Root.get(i).left);
Value.add(Root.get(i).left.val);
}
if(Root.get(i).right!=null)
{
Root.add(Root.get(i).right);
Value.add(Root.get(i).right.val);
}
}
return Value;
}
}