103. 二叉樹的鋸齒形層次遍歷

題目

給定一個二叉樹,返回其節(jié)點值的鋸齒形層次遍歷。(即先從左往右,再從右往左進行下一層遍歷,以此類推,層與層之間交替進行)。

例如:
給定二叉樹 [3,9,20,null,null,15,7]

    3
   / \
  9  20
    /  \
   15   7

返回鋸齒形層次遍歷如下:

[
[3],
[20,9],
[15,7]
]

題解

使用隊列先進先出的特性,按層將節(jié)點入隊,并出隊。再將出隊按層對應順序添加到LinkedList中。

class Solution {
    public List<List<Integer>> zigzagLevelOrder(TreeNode root) {
        List<List<Integer>> res = new ArrayList<>();
        if (root == null) {
            return res;
        }
        Queue<TreeNode> dq = new LinkedList<>();
        dq.offer(root);
        boolean right = true;
        while (!dq.isEmpty()) {
            LinkedList<Integer> inRes = new LinkedList<>();
            int levelCount = dq.size();
            while (levelCount-- > 0) {
                TreeNode td = dq.poll();
                if (td.left != null) {
                    dq.offer(td.left);
                }
                if (td.right != null) {
                    dq.offer(td.right);
                }
                if (right) {
                    inRes.offerLast(td.val);
                } else {
                    inRes.offerFirst(td.val);
                }
            }
            right =  !right;
            res.add(inRes);
        }
        return res;
    }
}
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容