1.1 json案例及其要求

    1. let rootDom = {
    2. val: 10,
    3. left: {
    4. val: 5,
    5. left: {
    6. val: 3,
    7. left: {
    8. val: 3
    9. },
    10. right: {
    11. val: 2
    12. }
    13. },
    14. right: {
    15. val: 2,
    16. right: {
    17. val: 1
    18. }
    19. }
    20. },
    21. right: {
    22. val: -3,
    23. right: {
    24. val: 11
    25. }
    26. }
    27. }

    1.2 目标代码

      let root = [10, 5, -3, 3, 2, null, 11, 3, -2, null, 1]
    

    2 代码实现

      // 首先根元素入队
      // 当队列不为空的时候
      //    求当前队列的长度 s_is 
      //    依次从队列中取 s_is i个元素进行拓展,然后进入下一次迭代
      var levelOrder = function (root) {
        const ret = [];
        if (!root) {
          return ret;
        }
        const q = [];
        q.push(root);
        while (q.length !== 0) {
          const currentLevelSize = q.length;
          for (let i = 1; i <= currentLevelSize; ++i) {
            const node = q.shift();
            if (node) {
              ret.push(node.val);
              q.push(node.left);
              q.push(node.right);
            } else {
              ret.push(null);
            }
    
          }
        }
    
        return remove(ret);
      };
    
      function remove(arr){
        let flag = true
        for(let i =arr.length-1;i>=0;i--){
          if(arr[i] != null){
            break
          }
         if(arr[i]==null){
           arr.pop()
         }
        }
        return arr
      }
      console.log(levelOrder(rootDom))
    

    说起来也简单就是个层序遍历