LeetCode--No.102--Binary Tree Level Order Traversal

来源:互联网 发布:mac safari 缓存路径 编辑:程序博客网 时间:2024/05/17 03:00

asb

asdfsadf

asdf


asdf

sdf

/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */public class Solution {    public List<List<Integer>> levelOrder(TreeNode root) {        List<List<Integer>> res = new ArrayList<List<Integer>>();        if (root == null)            return res;        List<TreeNode> currlayer = new ArrayList<TreeNode>();        currlayer.add(root);        while(!currlayer.isEmpty()){            List<TreeNode> nextlayer = new ArrayList<TreeNode>();            List<Integer> currvalue = new ArrayList<Integer>();            for(TreeNode node : currlayer){                currvalue.add(node.val);                if(node.left != null)                    nextlayer.add(node.left);                if(node.right != null)                    nextlayer.add(node.right);            }            res.add(currvalue);            currlayer = nextlayer;        }        return res;    }}

用Queue. 貌似没什么区别

public class Solution {    public List<List<Integer>> levelOrder(TreeNode root) {        List<List<Integer>> res = new ArrayList<List<Integer>>();        if (root == null)            return res;        Queue<TreeNode> currlayer = new LinkedList<TreeNode>();        currlayer.add(root);        while(!currlayer.isEmpty()){            Queue<TreeNode> nextlayer = new LinkedList<TreeNode>();            List<Integer> currvalue = new ArrayList<Integer>();            while(!currlayer.isEmpty()){                TreeNode node = currlayer.remove();                currvalue.add(node.val);                if (node.left != null)                    nextlayer.add(node.left);                if(node.right != null)                    nextlayer.add(node.right);            }            res.add(currvalue);            currlayer = nextlayer;        }        return res;    }}

之前一直在想着清空的事情。因为想要把nextlayer的结点复制到currlayer上面。然后nextlayer清空。用来存储下一次的。

也想要把currlayer清空。存储下一票。

然而其实很简单,把它们写成循环内的局部变量就可以了。每次都会新建,不用考虑清空的问题。



0 0