leetCode 103.Binary Tree Zigzag Level Order Traversal (二叉

Given a binary tree, return thezigzag level ordertraversal of its nodes’ values. (ie, from left to right, then right to left for the next level and alternate between).

For example:Given binary tree{3,9,20,#,#,15,7},

3 / \ 9 20/ \ 15 7

return its zigzag level order traversal as:

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

思路:与二叉树水平序解题思路差不多,得到水平序结果之后,再对偶数链表反转即可。‘

代码如下:

/** * Definition for a binary tree node. * public class TreeNode { *int val; *TreeNode left; *TreeNode right; *TreeNode(int x) { val = x; } * } */public class Solution {List<List<Integer>> list = new ArrayList<List<Integer>>();public List<List<Integer>> zigzagLevelOrder(TreeNode root) {dfs(0,root);//每隔1行交换顺序for(int i = 1; i < list.size(); i = i+2){List<Integer> al = list.get(i);int len = al.size();//倒序交换for(int j = 0; j + j < len-1; j++){int k = al.get(j);al.set(j, al.get(len-1-j));al.set(len-1-j, k);}}return list;}/*** 中序遍历,,根据深度添加list* @param dep 树的深度* @param root 根节点*/private void dfs(int dep,TreeNode root){if(root == null){return;}List<Integer> al;//根据情况得到al值if(list.size() > dep){al = list.get(dep);}else{al = new ArrayList<Integer>();list.add(al);}dfs(dep+1,root.left);al.add(root.val);dfs(dep+1,root.right);}}

版权声明:本文为博主原创文章,未经博主允许不得转载。

在泪水中浸泡过的微笑最灿烂,从迷惘中走出来的灵魂最清醒。

leetCode 103.Binary Tree Zigzag Level Order Traversal (二叉

相关文章:

你感兴趣的文章:

标签云: