94. Binary Tree Inorder Traversal 二叉树中序遍历

85 阅读1分钟

94. Binary Tree Inorder Traversal

解题思路

  1. iter(root) 递归处理 root节点
  2. iter(node.left) 首先深度递归 left节点 如果 node 存在则 push 进结果数组即可

image.png

上图执行步骤

iter(root)

iter(node.left) 向下传递数据

node === null return null 回溯数据

res.push(1)

iter(node.right) 向下传递数据 2

iter(node.left) 3 入栈 res.push(3)

iter(node.right) 3 节点结束 回溯到 2节点

res.push(2)

最后顺序 [1,3,2]

代码

/**
 * 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 inorderTraversal = function(root) {
   let res = []

   const iter = (node) => {
       if(node === null) return null

       iter(node.left)
       if(node) {
           res.push(node.val)
       }
       iter(node.right)
   }

   iter(root)

   return res
};