算法(3)层次顺序遍历二叉树
2018-09-16 本文已影响0人
来搞事情
问题:
按照层次顺序遍历二叉树,每层换行打印
1、普通的按层打印二叉树只需要使用队列就可以了
2、按层打印二叉树,需要记录每层的最后节点。使用两个值记录,last和nlast,last记录每一层的最后一个节点,nlast记录当前出队列的节点的儿子节点,当出队的值等于last的时候换行
public static int[][] printTree1(TreeNode root) {
int[][] result = new int[8][8];
int i = 0, j = 0;
TreeNode last = root, nlast = root;
Queue<TreeNode> queue = new LinkedList<TreeNode>();
queue.offer(root);
while (queue.size() > 0) {
TreeNode node = queue.poll();
result[i][j++] = node.val;
if (node.left != null) {
queue.offer(node.left);
nlast = node.left;
}
if (node.right != null) {
queue.offer(node.right);
nlast = node.right;
}
if (node == last) {
last = nlast;
i++;
j = 0;
}
}
return result;
}