leetcode:102. 二叉树的层次遍历 java版

题目描述如下:

给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。

例如:
给定二叉树: [3,9,20,null,null,15,7],

    3
   / \
  9  20
    /  \
   15   7

返回其层次遍历结果:

[
  [3],
  [9,20],
  [15,7]
]
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
/**
*怎么实现一层层遍历,集合里怎么来存放限制一层层,一次循环完就放进去,一层就遍历完事;
应该是队列循环一次存放一个集合里,一次循环完了,在把下一层数据放入队列
*/
class Solution {
    public List<List<Integer>> levelOrder(TreeNode root) {
        //如果为空,返回空集
        if(root==null) {
            return new ArrayList<>();
        }
        //binaryTreelevel(root);
        //嵌入集合
         List<List<Integer>> list = new ArrayList<>();
        //定义队列集合
        Queue<TreeNode> queue = new LinkedList<>();
        //添加根结点
        queue.add(root);
        while(!queue.isEmpty()) {
            //定义内层集合,循环一次存一层
            List<Integer> listTree = new ArrayList<>();
            //定义这个一层的长度
            int count =queue.size();
            //这控制层数。第一层一个结点,二层两个结点,三层四个结点,指数形式
            for(int i=0;i<count;i++){
                //把这层值放入队列
                TreeNode pNode = queue.poll();
                //放入集合
                listTree.add(pNode.val);
                //左右判断
                if(pNode.left !=null){
                    queue.add(pNode.left); 
                }
                if(pNode.right !=null){
                    queue.add(pNode.right); 
                }   
            }
            list.add(listTree);
        }
         System.out.print(list);
        return list;
    }
    
   // public void binaryTreelevel(TreeNode root) {
       
   // }
}

估计别人的方法更好,我的时间复杂度比较低效率不高。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值