给你二叉树的根节点 root
,返回它节点值的 前序 遍历。
示例 1:
输入:root = [1,null,2,3] 输出:[1,2,3]
示例 2:
输入:root = [] 输出:[]
示例 3:
输入:root = [1]
输出:[1]
提示:
[0, 100]
内-100 <= Node.val <= 100
进阶:递归算法很简单,你可以通过迭代算法完成吗?
思路:前序遍历:根节点-左节点-右节点
方法1:递归
时间复杂度:O(n),其中 n 是二叉树的节点数。每一个节点恰好被遍历一次。
空间复杂度:O(n),为递归过程中栈的开销,平均情况下为 O(logn),最坏情况下树呈现链状,为O(n)。
1 /** 2 * Definition for a binary tree node. 3 * function TreeNode(val, left, right) { 4 * this.val = (val===undefined ? 0 : val) 5 * this.left = (left===undefined ? null : left) 6 * this.right = (right===undefined ? null : right) 7 * } 8 */ 9 /** 10 * @param {TreeNode} root 11 * @return {number[]} 12 */ 13 var preorderTraversal = function(root) { 14 let res = []; 15 if (root != null) { 16 res.push(root.val); 17 res = res.concat(preorderTraversal(root.left)); 18 res = res.concat(preorderTraversal(root.right)); 19 } 20 return res; 21 };
原文:https://www.cnblogs.com/icyyyy/p/15189012.html