zoukankan      html  css  js  c++  java
  • 103.二叉树的锯齿形层次遍历

    2020-05-26
    二叉树的锯齿形层次遍历

    给定一个二叉树,返回其节点值的锯齿形层次遍历。

    (即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。

    例如:

    给定二叉树 [3,9,20,null,null,15,7],

    题解:
    思路1:闭包广度优先搜索
    /**
     * Definition for a binary tree node.
     * function TreeNode(val) {
     *     this.val = val;
     *     this.left = this.right = null;
     * }
     */
    /**
     * @param {TreeNode} root
     * @return {number[][]}
     */
    var zigzagLevelOrder = function (root) {
      let result = []; // 存结果的
      let handler = (node, i) => { // 处理函数 node是当前节点 i是当前节点的高度
        if (!node) return; // 如果没有值直接return
        if (!result[i]) result[i] = []; // 如果当前高度对应的数组没有 初始化为空数组
        if (i % 2 === 1) { // 当当前高度是1,3,5,7...时 因为要反向所以向前插入
          result[i].unshift(node.val);
        } else { // 当前高度为0 2 4 6...时 直接push
          result[i].push(node.val);
        }
        i++; // 高度加1 遍历下一层 注意 这里的高度都是闭包 每一次处理的高度是互不影响的
        handler(node.left, i); // 遍历左侧
        handler(node.right, i); // 遍历右侧
      }
      handler(root, 0); // 从根节点开始 高度为0
      return result;
    };
  • 相关阅读:
    [PHP] laravel框架注意bootstrap/cache
    [git] git拉取远程分支代码
    Prometheus监控系统(4)pushgateway及自定义脚本
    k8s 学习
    pxc /Galera Cluster详解
    Percona Monitoring and Management
    etcd获取所有key
    kubernetes Pod驱逐迁移drain用法
    kubernetes etcd数据管理
    办公环境下k8s网络互通方案
  • 原文地址:https://www.cnblogs.com/lanpang9661/p/12963419.html
Copyright © 2011-2022 走看看