点击链接即可查看题目: 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;
}
};