1. 程式人生 > 其它 >一個後端要具備的好習慣

一個後端要具備的好習慣

102. 二叉樹的層序遍歷

Solution

思路:搞一個深度,然後放到對應的層次裡。這裡開List巢狀的時候有點坑,不過根據list的容量大小和層次的高度關係,來進行建立。這裡的NewNode不能共用。題解程式碼是 用for迴圈搞出來那一層的。普通的BFS是彈出一個。見下面程式碼二。

///程式碼一
class Solution {
    public List<List<Integer>> levelOrder(TreeNode root) {
        if (root == null) return new ArrayList<>();
        List<List<Integer>> lists = new ArrayList<>();
        Queue<NewNode> queue = new ArrayDeque<>();
        NewNode newNode = new NewNode();
        newNode.node = root;
        newNode.deep = 0;
        queue.add(newNode);
        while (!queue.isEmpty()) {
            NewNode t = queue.remove();
            if (lists.size() <= t.deep) {
                lists.add(new ArrayList<>());
            }
            lists.get(t.deep).add(t.node.val);
            if (t.node.left != null) {
                NewNode l = new NewNode();
                l.node = t.node.left;
                l.deep = t.deep + 1;
                queue.add(l);
            }
            if (t.node.right != null) {
                NewNode r = new NewNode();
                r.node = t.node.right;
                r.deep = t.deep + 1;
                queue.add(r);
            }
        }
        return lists;
    }
}

class NewNode {
    TreeNode node;
    int deep;
}
//程式碼二
class Solution {
    public List<List<Integer>> levelOrder(TreeNode root) {
        List<List<Integer>> lists = new ArrayList<>();
        if (root == null) return lists;
        Queue<TreeNode> queue = new ArrayDeque<>();
        queue.add(root);
        while (!queue.isEmpty()) {
            List<Integer> level = new ArrayList<>();
            int sz = queue.size();
            for (int i = 0; i < sz; i++) {
                TreeNode node = queue.remove();
                level.add(node.val);
                if (node.left != null) {
                    queue.add(node.left);
                }
                if (node.right != null) {
                    queue.add(node.right);
                }
            }
            lists.add(level);
        }
        return lists;
    }
}