解题:Leetcode102题:Binary Tree Level Order Traversal II

旧街凉风 提交于 2020-04-28 23:12:55
package com.leetcode.problem;

import java.util.ArrayList;
import java.util.List;
import java.util.Stack;

/**
 * @author pxu
 * @create 2020-04-28 22:33
 */
public class Problem107 {

    public static void main(String[] args) {

        Problem107 p107 = new Problem107();

        System.out.println(p107.levelOrder(TreeNode.ProdeuceBianryTRee()));

    }

    public List<List<Integer>> levelOrder(TreeNode root) {

        List<List<Integer>> resReverse = new ArrayList<>();

        Stack<List<Integer>> stack = new Stack<>();

        if(root == null)
            return resReverse;

        ArrayList<TreeNode> cur = new ArrayList<>();
        ArrayList<TreeNode> next = new ArrayList<>();

        cur.add(root);

        while (!cur.isEmpty())
        {
            ArrayList<Integer> element = new ArrayList<>();

            for (TreeNode node : cur) {
                element.add(node.val);
                if(node.left != null)
                    next.add(node.left);
                if(node.right != null)
                    next.add(node.right);
            }

            resReverse.add(element);

            ArrayList tmp = cur;
            cur = next;
            next = tmp;
            next.clear();
        }


        List<List<Integer>> res = new ArrayList<>();


        for (int i = resReverse.size()-1; i >=0; i--) {

            res.add(resReverse.get(i));

        }

        return res;


    }

}

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!