• 【每日一题-leetcode】 102.二叉树的层序遍历


    102.二叉树的层序遍历

    1. 二叉树的层序遍历

    难度中等460

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

    示例:

    二叉树:[3,9,20,null,null,15,7],

        3
       / 
      9  20
        /  
       15   7
    

    返回其层次遍历结果:

    [
      [3],
      [9,20],
      [15,7]
    ]
    

    1.DFS

    List<List<Integer>> result = new ArrayList<>();
    //1.DFS 将每一次用k记录 添加到对应的层级
    // time :O(n) 
    public List<List<Integer>> levelOrder(TreeNode root) {
        if(root == null)    return result;
        recur(root,0);
        return result;
    }
    
    private void recur(TreeNode root,int k){
        if(root != null){
            if(result.size()<=k){
                result.add(new ArrayList<>());
            }
            result.get(k).add(root.val);
            recur(root.left,k+1);
            recur(root.right,k+1);
        }
    }	
    

    2.BFS

       //2.BFS 层序遍历 将每层节点添加到queue中 
            public List<List<Integer>> levelOrder(TreeNode root) {
                List<List<Integer>> result = new ArrayList<>();
                if(root == null)    return result;
                Queue<TreeNode> queue = new LinkedList<>();
        
                //1.添加首节点
                queue.add(root);
                while(!queue.isEmpty()){
                    int cnt = queue.size();
                    List<Integer> list = new ArrayList<>();
                    while(cnt-->0){
                        TreeNode node = queue.poll();
                        if(node == null){
                            continue;
                        }
                        list.add(node.val);
                        queue.add(node.left);
                        queue.add(node.right);
                    }
                    if(queue.size()!=0){
                        result.add(list);
                    }
                }
                return result;
            }
    
  • 相关阅读:
    winform 异步更新ui
    定时器的写法 winform
    延迟加载
    使用VS分析程序性能
    win7 C/C++,QT安装环境总结
    论文总结
    天舟一号
    硬盘 SMART 检测参数详解[转]
    碧桃花
    在C的头文件中定义的结构体,如何在cpp文件中引用
  • 原文地址:https://www.cnblogs.com/qxlxi/p/12860604.html
Copyright © 2020-2023  润新知