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;
    }
};
相关推荐
程序员-King.7 分钟前
day107—同向双指针—无重复字符的最长字串(LeetCode-3)
算法·leetcode·双指针
风掣长空8 分钟前
【LeetCode】面试经典150题:合并两个有序数组
算法·leetcode·面试
im_AMBER11 分钟前
Leetcode 69 正整数和负整数的最大计数
数据结构·笔记·学习·算法·leetcode
_OP_CHEN17 分钟前
【算法基础篇】(二十六)数据结构封神!Trie 树从入门到爆杀算法题:拼音输入法、单词统计都靠它
数据结构·c++·算法·蓝桥杯·trie树·算法竞赛·acm/icpc
ULTRA??17 分钟前
C++类型和容器在Rust中的对应关系
c++·rust
明洞日记26 分钟前
【设计模式手册016】中介者模式 - 解耦多对象交互
c++·设计模式·交互·中介者模式
李日灐27 分钟前
C++STL:熟悉vector的底层实现,部分源码解析,迭代器失效和深层次浅拷贝
开发语言·c++
一只小bit30 分钟前
Qt 信号与槽:信号产生与处理之间的重要函数
前端·c++·qt·cpp·页面
十五年专注C++开发1 小时前
sigslot: 一个轻量级实现观察者模式的C++开源库
c++·观察者模式·开源
千千道1 小时前
QT上位机作为FTP客户端上传多文件
c++·qt