leetcode103. 二叉树的锯齿形层次遍历
生活随笔
收集整理的這篇文章主要介紹了
leetcode103. 二叉树的锯齿形层次遍历
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
給定一個二叉樹,返回其節點值的鋸齒形層次遍歷。(即先從左往右,再從右往左進行下一層遍歷,以此類推,層與層之間交替進行)。
例如:
給定二叉樹?[3,9,20,null,null,15,7],
? ? 3
? ?/ \
? 9 ?20
? ? / ?\
? ?15 ? 7
返回鋸齒形層次遍歷如下:
[
? [3],
? [20,9],
? [15,7]
]
思路:達到層次遍歷的效果后,把奇數下標的list反轉一下即可。
或者雙端隊列,奇數層放的時候放開頭,偶數層放結尾。
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(int x) { val = x; }* }*/ class Solution {List<List<Integer>> levels = new ArrayList<List<Integer>>();public void helper(TreeNode node, int level) {if (levels.size() == level)levels.add(new ArrayList<Integer>());levels.get(level).add(node.val);if (node.left != null)helper(node.left, level + 1);if (node.right != null)helper(node.right, level + 1);}public List<List<Integer>> zigzagLevelOrder(TreeNode root) {if (root == null) return levels;helper(root, 0);for(int i=1;i<levels.size();i+=2)Collections.reverse(levels.get(i));return levels;} }?
總結
以上是生活随笔為你收集整理的leetcode103. 二叉树的锯齿形层次遍历的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 建行钻石卡有年费吗?可用积分来兑换
- 下一篇: 广发I购花占用信用卡额度吗?用了必须要还