/**
* @param {TreeNode} root
* @return {number[]}
*/
//前序遍历,就是从根节点开始,先遍历左子树,再遍历右子树 中左右
//把路过的value都放到数组中
//如果子树到了末尾,就直接return
var preorderTraversal = function(root) {
var res = [];
//如果连根节点都没有直接结束
if(!root) return res;
//入栈操作
var stack = [root];
//循环节点数
while(stack.length !== 0){
//节点 = 栈顶元素 出栈操作,删除并返回最后一个元素
var node = stack.pop();
//res入栈操作 push方法在数组最后插入一个元素
res.push(node.val);
//如果有右节点则先入栈右节点
if(node.right){
//入栈操作 因为读取根左右,所以写入右左
stack.push(node.right);
}
//如果存在左节点
if(node.left){
//入栈操作
stack.push(node.left);
}
//然后此时node = stack.pop();就是刚刚入栈的新元素
}
return res;
};
2.
.
3