[路飞] 41——leetcode - 144. 二叉树的前序遍历

147 阅读1分钟

Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情

144. 二叉树的前序遍历

题目分析

给你二叉树的根节点 root ,返回它节点值的 前序 遍历。

思路讲解

前序遍历就是按根节点,左子节点,右子节点来输出整个树。我们只需要递归的遍历树的左子树和右子树就可以了

  • 前序遍历:根左右
  • 中序遍历:左根右
  • 后序遍历:左右根

示例

image.png

输入: root = [1,null,2,3]
输出: [1,2,3]

输入: root = []
输出: []

输入: root = [1]
输出: [1]

输入: root = [1,2]
输出: [1,2]

输入: root = [1,null,2]
输出: [1,2]

代码

 /*
 * @Autor: frllk
 * @Description: 
 * @Date: 2022-02-10 11:08:47
 * @LastEditors: frllk
 * @LastEditTime: 2022-03-27 00:03:06
 * @FilePath: \frllk-studybook\算法\week4\144.二叉树的前序遍历.js
 */
/*
 * @lc app=leetcode.cn id=144 lang=javascript
 *
 * [144] 二叉树的前序遍历
 */

// @lc code=start
/**
 * Definition for a binary tree node.
 * function TreeNode(val, left, right) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.left = (left===undefined ? null : left)
 *     this.right = (right===undefined ? null : right)
 * }
 */
/**
 * @param {TreeNode} root
 * 前序遍历:根左右,递归的方式:封装函数
 * @return {number[]}
 */
 // 前期操作
var preorderTraversal = function(root) {
  let ans = [] // 定义一个空数组,用于最后返回。存放的是每一次遍历最后存储的每一层的节点的值
  travese(root, ans)
  return ans
};
// 封装函数:封装做的一些操作
var travese = function (root, ans) {
  if (!root) return null // 如果根节点不存在,返回null
  ans.push(root.val) // 根节点的值
  travese(root.left, ans) // 左子树
  travese(root.right, ans) // 右子树
}
// @lc code=end