来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/binary-tree-zigzag-level-order-traversal 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
给你二叉树的根节点 root ,返回其节点值的 锯齿形层序遍历 。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。
解答
普通的层级遍历,只是有两个注意点:
- 加个方向变量
逆序的时候需要从数组头部插入
/*** Definition for a binary tree node.* function TreeNode(val, left, right) {* this.val = (val===undefined ? 0 : val)* this.left = (left===undefined ? null : left)* this.right = (right===undefined ? null : right)* }*//*** @param {TreeNode} root* @return {number[][]}*/var zigzagLevelOrder = function(root) {if (!root) return [];let stack = [ root ],direction = 1,result = [];while (stack.length) {let temp = [], tempVal = [];if (direction) {for (let i = 0; i < stack.length; i++) {const node = stack[i];if (node) {tempVal.push(node.val);node.left && temp.push(node.left);node.right && temp.push(node.right);}}} else {for (let i = stack.length - 1; i >= 0; i--) {const node = stack[i];if (node) {tempVal.push(node.val);node.right && temp.unshift(node.right);node.left && temp.unshift(node.left);}}}direction = 1 - direction;stack = temp;result.push(tempVal);}return result;};
