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;
};
原文地址:https://www.cnblogs.com/lanpang9661/p/12970497.html