本文最后更新于:2023年3月19日 晚上
                
              
            
            
              Lt102. 二叉树的层序遍历、Lt94. 二叉树的中序遍历
给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。
示例:
二叉树:[3,9,20,null,null,15,7],
返回其层次遍历结果:
1 2 3 4 5
   | [   [3],   [9,20],   [15,7] ]
 
  | 
 
思路
复习,使用队列的 BFS
解答
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
   | 
 
 
 
 
 
 
 
 
 
  var levelOrder = function (root) {   if (!root) return [];   const queue = [];   const res = [];   queue.push(root);   while (queue.length) {     const temp = queue.splice(0, queue.length);     const val = [];     while (temp.length) {       const node = temp.shift();       val.push(node.val);       if (node.left) queue.push(node.left);       if (node.right) queue.push(node.right);     }     res.push(val);   }   return res; };
 
  | 
 
给定一个二叉树的根节点 root ,返回它的 中序 遍历。
 示例 1:

示例 2:
示例 3:
示例 4:

示例 5:

提示:
- 树中节点数目在范围 
[0, 100] 内 
-100 <= Node.val <= 100 
进阶: 递归算法很简单,你可以通过迭代算法完成吗?
思路
递归
常规递归即可
迭代
将指向 root 节点的所有左子树加入栈中,直到指针指向的节点左子树为 null。将栈中栈顶元素出栈,将对应的值加入结果数组,将 root 指向该元素的右子树,继续以上将左子树加入栈中的过程。
解答
递归
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
   | 
 
 
 
 
 
 
 
 
 
 
  var inorderTraversal = function (root) {   const res = [];   const traverse = (root) => {     if (!root) return;     traverse(root.left);     res.push(root.val);     traverse(root.right);   };   traverse(root);   return res; };
 
  | 
 
迭代
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
   | 
 
 
 
 
 
 
 
 
 
 
  var inorderTraversal = function (root) {   const res = [];   const stack = [];
    while (root || stack.length) {     if (root) {       stack.push(root);       root = root.left;     } else {       const node = stack.pop();       res.push(node.val);       root = node.right;     }   }
    return res; };
 
  |