function preorderTraversal( root ) {
    // write code here
    const res=[];
    preorder(root,res)
    return res;
}
function preorder(root,res){
    if(root==null)return;
    res.push(root.val);
    preorder(root.left,res);
    preorder(root.right,res)
}
module.exports = {
    preorderTraversal : preorderTraversal
};

初始化一个res数组存数据,然后调用前序遍历方法,如果节点为空就返回。

不为空就塞入数值,然后用根左右的顺序递归。

/*
 * function TreeNode(x) {
 *   this.val = x;
 *   this.left = null;
 *   this.right = null;
 * }
 */
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param root TreeNode类 
 * @return int整型一维数组
 */
function preorderTraversal( root ) {
    // write code here
    const res=[];
    if(!root)return res;
    let stk=[root];
    while(stk.length){
        let top=stk.pop();
        res.push(top.val);
        if(top.right) stk.push(top.right);
        if(top.left) stk.push(top.left);
    }
    return res;
}

module.exports = {
    preorderTraversal : preorderTraversal
};

初始化res数组接数据,以及创建一个调用栈,因为先进后出,所以先塞入右子树再左子树,这样等弹出节点的时候就是左先右后。