Java层序遍历二叉树

Java层序遍历二叉树_第1张图片

二叉树准备:

public class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;

    TreeNode() {
    }

    TreeNode(int val) {
        this.val = val;
    }

    TreeNode(int val, TreeNode left, TreeNode right) {
        this.val = val;
        this.left = left;
        this.right = right;
    }
}
思路:我们需要创建一个队列,根先进,如果左子树或者右子树不为空,也要进

力扣

public class Test2{
    public List> levelOrder(TreeNode root) {
        Queue qu=new LinkedList<>();
        List> ret=new ArrayList<>();
        if(root==null)return ret;//队列存第一个
        qu.offer(root);
        int size;
        while (!qu.isEmpty()){
            List list=new ArrayList<>();
            //队列不为空其中我们只返回当下跟节点的左子树第一个和右子树第一个,所以需要size
            size= qu.size();
            while (size!=0){
                TreeNode cur=qu.poll();
                list.add(cur.val);
                if(cur.left!=null)qu.add(cur.left);
                if(cur.right!=null)qu.add(cur.right);
                size--;
            }
            ret.add(list);//每一行
        }
        return ret;
    }
}

你可能感兴趣的:(java练习题,数据结构,Java,数据结构)