给你二叉树的根节点 root ,返回它节点值的 前序 遍历。
代码
递归法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| 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) {} };
#include <iostream> #include <vector> using namespace std;
class Solution { public: void preOrder(TreeNode *root, vector<int> &res) { if (root == nullptr) return; res.push_back(root->val); preOrder(root->left, res); preOrder(root->right, res); }
vector<int> preorderTraversal(TreeNode *root) { vector<int> res; preOrder(root, res); return res; } };
|
迭代法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| class Solution { public: vector<int> preorderTraversal(TreeNode* root) { stack<TreeNode*> st; vector<int> result; if (root == NULL) return result; st.push(root); while (!st.empty()) { TreeNode* node = st.top(); st.pop(); result.push_back(node->val); if (node->right) st.push(node->right); if (node->left) st.push(node->left); } return result; } };
|