94. 二叉树的中序遍历

力扣

给定一个二叉树的根节点 root ,返回它的 中序 遍历。

示例 1:

输入:root = [1,null,2,3]
输出:[1,3,2]

示例 2:

输入:root = []
输出:[]

示例 3:

输入:root = [1]
输出:[1]

示例 4:

输入:root = [1,2]
输出:[2,1]

示例 5:

输入:root = [1,null,2]
输出:[1,2]

1、递归

/**
 * 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) {
  const res = []

  function inorder(root) {
      if(!root) return

      inorder(root.left)
      res.push(root.val)
      inorder(root.right)
  }

  inorder(root)

  return res
};

2、迭代

// 迭代
var inorderTraversal = function(root) {
  if(!root) return []

  const res = []
  const stack = []
  let p = root

  while(stack.length || p) {
      while(p) {
          stack.push(p)
          p = p.left
      }

      const n = stack.pop()
      res.push(n.val)
      p = n.right
  }

  return res
};

1

你可能感兴趣的:(leetcode,leetcode,数据结构,算法)