C++ 二叉树的前序遍历 - 力扣(LeetCode)

点击链接即可查看题目: 144. 二叉树的前序遍历 - 力扣(LeetCode)

一、题目

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

示例 1:

**输入:**root = 1,null,2,3

输出:1,2,3

解释:

示例 2:

**输入:**root = 1,2,3,4,5,null,8,null,null,6,7,9

输出:1,2,4,5,6,7,3,8,9

解释:

示例 3:

**输入:**root = \[\]

输出:\[\]

示例 4:

**输入:**root = 1

输出:1

提示:

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

二、解题思路以及代码

cpp 复制代码
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */



class Solution {
public:
    vector<int> preorderTraversal(TreeNode* root) 
    {
        stack<TreeNode*> st;
        vector<int> v;
        //先访问左路节点
        
        TreeNode* cur = root;
        while(cur || !st.empty())
        {
            while(cur)
            {
                //左路节点访问,并且入栈
                st.push(cur);
                v.push_back(cur->val);
                cur = cur->left;
            }
            //子问题访问右子树
            TreeNode* top = st.top();
            cur = top->right;
            st.pop();
        }
        return v;
    }
};
相关推荐
2402_8828938631 分钟前
封装红黑树实现map和set —— 从源码到模拟实现
c++·set·map
神仙别闹2 小时前
基于C++ MFC 实现的智慧公交系统
开发语言·c++·mfc
dear_bi_MyOnly2 小时前
函数模块化:企业级项目高效之道
c++·后端·学习
码匠许师傅2 小时前
【设计模式精讲】13.装饰器模式(Decorator)
c++·设计模式·uml·装饰器模式
OPEN-F3 小时前
C++综合实战:面向对象图书管理系统
开发语言·c++
NeoGressAI外贸数字化4 小时前
外贸独立站零询盘排查:从 Google Search Console 到 PageSpeed 的技术实操
开发语言·c++
神仙别闹4 小时前
基于 QT(C++)实现操作系统
数据库·c++·qt
无小道4 小时前
C/C++——异步编程小记
开发语言·c++·c++11
奇树谦4 小时前
Pimpl 模式(d-pointer)详解:如何解决 C++ 头文件过大、编译依赖和 ABI 兼容问题
开发语言·c++
shylyly_4 小时前
stack/queue中的deque
数据结构·c++·deque·双端队列·queue·stack·容器适配器