JZ22 从上往下打印二叉树
  • 理解:通过队列实现,这种先入先出的节点,将左右子树加入到队列当中,然后将左右子节点逐个添加到ArrayList当中
  • 知识点:queue.offer(int num); queue.poll(); 每一层都应该全部添加完成后,在开始下一层的遍历。
  • 时间:2021年8月3号
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;

// 理解:通过队列实现,这种先入先出的节点,将左右子树加入到队列当中

/**
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> ans = new ArrayList<>();
        if (root == null) {
//             System.out.println("ans:");
            return ans;
        }


        Queue<TreeNode> queue = new LinkedList<>();

        queue.offer(root);
        int num = 1; //标记二叉树每一层有几个节点

        while (!queue.isEmpty()) {
//             TreeNode node = queue.poll();
            Queue<TreeNode> temp = queue; //采用临时队列,来存储上一层的二叉树节点
                                    //因为每一层,都需要在这一个循环中添加到结果中
            int pre = num;
            num = 0;
            while (!temp.isEmpty()) {
                TreeNode node = temp.poll();
                ans.add(node.val);

                for (int i = 0; i < pre; i++) {
                    if (node.left != null) {
                        queue.offer(node.left);
                        num++;
                    }
                    if (node.right != null){
                        queue.offer(node.right);
                        num++;
                    }
                }
            }

        }

        return ans;
    }
}

注意!此信息未认证,请谨慎判断信息的真实性!

全部评论
空

相关内容推荐

头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像 头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像 头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
点赞 评论 收藏
转发
点赞 收藏 评论
分享

全站热榜

正在热议