我的理解:如果根结点为空,直接返回空列表;如果根结点不空,把根结点添加到队列(nodeList)中,然后遍历队列,如果当前结点的左右结点不空,就把左右结点添加到队列中,然后把当前节点的值添加到定义的结合中。
代码如下:
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<Integer> list = new ArrayList<>();
ArrayList<TreeNode> nodeList = new ArrayList<>();
if(root==null)
return list;
nodeList.add(root);
for(int i =0 ;i<nodeList.size();i++){
TreeNode node = nodeList.get(i);
if(node.left!=null){
nodeList.add(node.left);
}
if(node.right!=null){
nodeList.add(node.right);
}
list.add(node.val);
}
return list;
}
}
网友评论