144.二叉树的前序遍历
2020-05-27
二叉树的前序遍历
给定一个二叉树,返回它的 前序 遍历。
题解:
思路1:递归
var preorderTraversal = function (root) { let result = []; let fn = (node) => { if (!node) return; result.push(node.val); fn(node.left); fn(node.right); } fn(root); return result; };
思路2:迭代
var preorderTraversal = function (root) { if (!root) return []; let stact = [root], result = [], curNode; // stack 存储目前需要处理的节点 while (stact.length) { curNode = stact.pop(); // 从栈中取最后一个处理 result.push(curNode.val); // 值存入result中 curNode.right && stact.push(curNode.right); // 如果有right 将right放入栈中 curNode.left && stact.push(curNode.left); // 如果有left 将left放入栈中 // 之所以先放right再放left 是因为确保每次取的值都是最左边的 } return result; };