Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
题目分析
给你二叉树的根节点 root ,返回它节点值的 前序 遍历。
思路讲解
前序遍历就是按根节点,左子节点,右子节点来输出整个树。我们只需要递归的遍历树的左子树和右子树就可以了
- 前序遍历:根左右
- 中序遍历:左根右
- 后序遍历:左右根
示例
输入: 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