二叉树的前序遍历js实现(递归,非递归)

leetcode原题

简单递归

var preorderTraversal = function(root) {
    
    
  const res = []
  function traverse(root){
    
    
    if(root){
    
    
        res.push(root.val);
        if(root.left){
    
    
          traverse(root.left)
        }
        if(root.right){
    
    
          traverse(root.right)
        }
    }
    return res;
  }
  traverse(root)
  return res;
};

遍历

var preorderTraversal = function(root) {
    
    
    let r = []
    function fn(t){
    
    
        if(t){
    
    
            let stack = [t];
            while(stack.length){
    
    
              let item = stack.shift();
              r.push(item.val);
              if(item.right){
    
    
                  stack.unshift(item.right)
              }    
              if(item.left){
    
    
                  stack.unshift(item.left)
              }  
            }
        }
    }
    fn(root)
    return r;
}

猜你喜欢

转载自blog.csdn.net/qq_29334605/article/details/109306477
今日推荐