Skip to content

Latest commit

 

History

History
50 lines (42 loc) · 1.12 KB

144-二叉树的前序遍历.md

File metadata and controls

50 lines (42 loc) · 1.12 KB

144-二叉树的前序遍历

原题

解法

前序遍历的顺序(头左右)

const preOrderTraversal = function (root) {
    let res = [];
    const preOrder = (root) => {
        if (root === null) {
            return;    
        }
        // 首先把头部节点添加进去
        res.push(root.val);
        // 然后这时候进入遍历节点的左节点
        // 不断调用 res.push 把左节点添加进去
        preorder(root.left);
        // 知道没有左节点了,触发了 if (root === null) 的判定规则,返回
        // 然后开始遍历右节点
        preorder(root.right);
    };
    
    preOrder(root);
    return res;
}

不适用递归的方式

const preorderTraversal = function (root) {
  if (root.val !== null) {
    let res = [];
    res.push(root.val);
    
    while (res.length) {
      root = res.pop();
      if (root.right !== null) {
        res.push(root.right);
      }
      
      if (root.left !== null) {
        res.push(root.left);
      }
      
      
    }
  }
}