⚡️144. 二叉树的前序遍历⚡️
给你二叉树的根节点 root ,返回它节点值的 前序 遍历。
示例 1:
输入:root = [1,null,2,3]
输出:[1,2,3]
示例 2:
输入:root = []
输出:[]
示例 3:
输入:root = [1]
输出:[1]
示例 4:
输入:root = [1,2]
输出:[1,2]
示例 5:
输入:root = [1,null,2]
输出:[1,2]
提示:
树中节点数目在范围 [0, 100] 内
-100 <= Node.val <= 100
进阶:递归算法很简单,你可以通过迭代算法完成吗?
⚡️分析⚡️
先序遍历非递归版,先push结点,然后分别将右和左子结点压入数组即可(因为我是用栈的pop,所以先压右,再压左)
代码如下:
/**
- 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 preorderTraversal = function(root) {
if(!root)return [];
const stack = [root];
const q = [];
// console.log(root.val);
while(stack.length) {
const n =stack.pop();
q.push(n.val);
if(n.right) stack.push(n.right);
if(n.left) stack.push(n.left);
}
return q;
};
算法效率如图: