杭州推荐网站建设团队,wordpress后台演示系统,福州网站建设市场,wordpress 栏目链接地址这个年和树过不去啦啦啦#xff01; 题目#xff1a; 给你二叉树的根节点 root #xff0c;返回其节点值的 锯齿形层序遍历 。#xff08;即先从左往右#xff0c;再从右往左进行下一层遍历#xff0c;以此类推#xff0c;层与层之间交替进行#xff09;。 示例 1 题目 给你二叉树的根节点 root 返回其节点值的 锯齿形层序遍历 。即先从左往右再从右往左进行下一层遍历以此类推层与层之间交替进行。 示例 1 输入root [3,9,20,null,null,15,7]
输出[[3],[20,9],[15,7]]示例 2 输入root [1]
输出[[1]]示例 3 输入root []
输出[]提示 树中节点数目在范围 [0, 2000] 内-100 Node.val 100 在之前遍历的基础上增加一个判断每层交替比如第一层ans 1从左到右第二层ans -1从右到左第三层ans 1又是从左到右......就可以啦
代码如下
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode right) {* this.val val;* this.left left;* this.right right;* }* }*/
class Solution {public ListListInteger zigzagLevelOrder(TreeNode root) {ListListInteger res new ArrayList();QueueTreeNode queue new LinkedList();if(root!null){queue.add(root);}int ans 1;while(!queue.isEmpty()ans!0){int size queue.size();ListInteger lever new ArrayList();for(int i 0 ; i size ; i){TreeNode node queue.poll();if(ans1){lever.add(node.val);}if(ans-1) lever.addFirst(node.val);if(node.left!null){queue.add(node.left);}if(node.right!null){queue.add(node.right);}}ans-ans;res.add(lever);}return res;}
}