题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
1、思路分析
从左至右的顺序打印联想到队列这种数据结构,但仍需注意入队和出队的逻辑。首先将根节点添加进队列,接着进行当队列不为空的循环,在循环里,先弹出队首元素,并将其保存在值TreeNode类型的t中,因为后续我们还需获得t的左右结点情况,将t添加进list中,并将t的左右结点依次入队,至此,一次循环的操作结束。此外,还需注意队列这种数据结构的基本操作。
2、代码
import java.util.ArrayList;
import java.util.Deque;
import java.util.LinkedList;
/**
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<>();
if(root == null) return list;
Deque<TreeNode> deque = new LinkedList<>();
deque.add(root);
while(!deque.isEmpty()) {
TreeNode t = deque.pop(); // 注意需要保存一次弹出的结点
list.add(t.val);
if(t.left != null) deque.add(t.left);
if(t.right != null) deque.add(t.right);
}
return list;
}
}


京公网安备 11010502036488号