LC-二叉树的前序遍历 发表于 2019-08-14 更新于 2020-03-21 分类于 LeetCode 题目描述二叉树的前序遍历 给定一个二叉树,返回它的 前序 遍历。 12345678输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3] 代码实现递归123456789101112131415161718192021222324/** * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; * this.left = this.right = null; * } *//** * @param {TreeNode} root * @return {number[]} */var preorderTraversal = function(root) { if (!root) { return []; } let result = []; function recursive(root) { result.push(root.val); root.left && recursive(root.left); root.right && recursive(root.right); } recursive(root); return result;}; 栈 + 迭代在前序后序和中序遍历中,这个的迭代方法应该是最好写的了。 这里注意要运用栈的原理 1234567891011121314151617181920212223/** * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; * this.left = this.right = null; * } *//** * @param {TreeNode} root * @return {number[]} */var preorderTraversal = function (root) { if (!root) return []; let result = []; let stack = [root]; while (stack.length) { let node = stack.pop(); result.push(node.val); node.right && stack.push(node.right); node.left && stack.push(node.left); } return result;};