从上到下遍历二叉树(学习笔记)

从上往下遍历二叉树

题目:

从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。

解题思路:

广度优先算法。

利用队列的先进先出特性,用一个队列存放 根结点

进入while语句 将根结点取出队列 ,再用一个数组将遍历顺序存起来

然后判断其左结点是否为空,否 将左结点存入队列,是,什么也不做,

再判断 右结点,操作和左结点一样 ,

进入下一次循环,判断队列中第一个结点的左右结点是否为空

最后 如果队列为空结束循环

代码实现

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public int[] levelOrder(TreeNode root) {
        if(root==null)return new int[0];
       // TreeNode left = root.left, right = root.right;
       Queue<TreeNode> queue = new LinkedList<>(); 
       queue.add(root);
       List<Integer> list = new ArrayList<>();
        while(!queue.isEmpty()){
            TreeNode node = queue.poll();
            list.add(node.val);
            if(node.left!=null)queue.add(node.left);
            if(node.right!=null)queue.add(node.right);
        }
        int[] arr = new int[list.size()];
        for(int i=0;i<list.size();i++){
            arr[i] = list.get(i);
        }
        return arr;
               
    }
}

什么是广度优先算法?

与深度优先算法不同,广度优先算法从上往下开始,同时访问父结点 ,左孩子,右孩子,然后再进入下一层,直到访问完所有结点。
    广撒网,体现一个广字。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值