LeetCode 144.二叉树的前序遍历(c++)

71 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第5天,点击查看活动详情

一、题目描述

144.二叉树的前序遍历

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

示例 1:

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

示例 2:

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

示例 3:

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

提示:

  • 树中节点数目在范围 [0, 100] 内
  • -100 <= Node.val <= 100

二、思路分析

这同样是一道简单题,考验了二叉树这一基本的算法内容。给了二叉树的根节点,要求返回节点值的前序遍历。要解出这道题,首先需要对二叉树的前序遍历、中序遍历和后序遍历有所了解。然后才能够根据它们对应的特点进行编程。

前序遍历遵循中左右的遍历规律。首先从根节点开始,记下根节点,然后看是否有左节点。如果有,则遍历左节点。其操作为将左节点视为根节点,记下左节点,并再次看否有左节点,如有,则继续将其视为根节点并记下,往下循环。如果没有,则看是否有右节点,如有,记下该右节点。如果没有,则返回到到上上层,以此类推。

三、AC代码

class Solution {
public:
    void traversal(TreeNode* cur, vector<int>& vec) //定义遍历函数,传入根节点以及要记录结果的容器类
 { 
 if (cur == NULL) return;  //若以当前节点为根节点的树为空,则退出当前节点的遍历 
 vec.push_back(cur->val); // 首先记录根节点
 traversal(cur->left, vec); // 左
 traversal(cur->right, vec); // 右
 }
    vector<int> preorderTraversal(TreeNode* root)
     {vector<int> result;
 traversal(root, result);
 return result;


    }
};

四、总结

二叉树是算法中的基本内容。掌握它是十分有必要的。另外,除了理论上的知识,我们也应该多动手尝试,这样才能彻底掌握。