zoukankan      html  css  js  c++  java
  • 剑指offer:二叉树打印成多行(层次遍历)

    1. 题目描述

    从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。

    2. 思路

    层次遍历

    3. 递归

    public class Solution {
        ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
            ArrayList<ArrayList<Integer>> list = new ArrayList<>();
            depth(pRoot, 1, list);
            return list;
        }
         
        private void depth(TreeNode root, int depth, ArrayList<ArrayList<Integer>> list) {
            if(root == null) return;
            if(depth > list.size())
                list.add(new ArrayList<Integer>());
            list.get(depth -1).add(root.val);
             
            depth(root.left, depth + 1, list);
            depth(root.right, depth + 1, list);
        }
    }

    4. 非递归

    import java.util.*;
    
    public class Solution {
        static ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
            return levelorder(pRoot);
        }
    
        public static ArrayList<ArrayList<Integer>> levelorder(TreeNode root) {
            Queue<TreeNode> queue = new LinkedList<>();
            ArrayList<ArrayList<Integer>> result = new ArrayList<>();
            if(root == null) return result;
            queue.offer(root); // 首先将根节点root入队
            while (!queue.isEmpty()) {// Queue不为空则循环
                ArrayList<Integer> node = new ArrayList<>();// 保存每一层节点的值
                int length = queue.size();// 每一层的节点数目
                while (length > 0) {
                    TreeNode tree = queue.poll();
                    if (tree.left != null) {
                        queue.offer(tree.left);
                    }
                    if (tree.right != null) {
                        queue.offer(tree.right);
                    }
                    node.add(tree.val);
                    length--;
                }
                // 循环结束后,得到的Queue为下一层做准备,node为本层遍历结果
                result.add(node);
            }
            return result;
        }
    }
  • 相关阅读:
    tcpdump高级过滤
    Flask简单学习
    nginx+keepalived高可用web负载均衡
    Golang基础(5):Go语言反射规则
    Golang基础(4):Go结构体
    分布式SESSION一致性
    JSON WEB TOKEN (JWT)
    Table布局
    GRID布局
    三种方式实现轮播图功能
  • 原文地址:https://www.cnblogs.com/haimishasha/p/11520955.html
Copyright © 2011-2022 走看看