美文网首页
LeetCode二叉树层次遍历

LeetCode二叉树层次遍历

作者: lingmacker | 来源:发表于2018-11-25 17:35 被阅读0次

    给定二叉树,按照层次去遍历其每一个节点:

    //层次遍历
    public class LevelOrder {
        
        //主要实现
        public List<List<Integer>> levelOrder(TreeNode root) {
            //用来保存遍历顺序的集合,每一层用一个集合保存
            List<List<Integer>> res = new ArrayList<>();
            //用来保存每一层节点
            ArrayList<TreeNode> btList = new ArrayList<TreeNode>();
            //根节点入列
            if (root != null)
                btList.add(root);
            //如果节点的集合不为空,遍历节点
            while (!btList.isEmpty()) {
                //用于保存该层的节点的数值
                List<Integer> list = new ArrayList<>();
                
                //用于保存下一层的节点
                ArrayList<TreeNode> temp = new ArrayList<TreeNode>();
                //遍历节点,将数值保存到一个List中
                for (TreeNode t : btList) {
                    list.add(t.val);
                    //先将该节点的左节点保存到temp中
                    if (t.left != null) {
                        temp.add(t.left);
                    }
                    //再将右节点保存到temp中
                    if (t.right != null) {
                        temp.add(t.right);
                    }
                }
                //遍历完成后,将遍历得到的数据集合添加到res
                res.add(list);
                //将btList清空
                btList.clear();
                //将下一层的节点添加到btList,继续遍历
                btList.addAll(temp);
            }
            return res;
        }
        
    }
    

    ​ 2018.11.25

    ​ 粗略记录二叉树层次遍历,以便不忘记!

    相关文章

      网友评论

          本文标题:LeetCode二叉树层次遍历

          本文链接:https://www.haomeiwen.com/subject/trapqqtx.html