day14 - 二叉树part01
/**
* 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:
void search(TreeNode* node, vector<int>& result){
if(!node)
return;
result.push_back(node->val);
search(node->left, result);
search(node->right, result);
}
vector<int> preorderTraversal(TreeNode* root) {
vector<int> result;
//递归
//search(root, result);
//迭代
stack<TreeNode*> stack_1;
if (root == NULL) return result;
stack_1.push(root);
while(!stack_1.empty()){
TreeNode* tmp = stack_1.top();
stack_1.pop();
result.push_back(tmp->val);
if(tmp->right) stack_1.push(tmp->right);
if(tmp->left) stack_1.push(tmp->left);
}
return result;
}
};
/**
* 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:
void search(TreeNode* node, vector<int>& result){
if(!node)
return;
search(node->left, result);
search(node->right, result);
result.push_back(node->val);
}
vector<int> postorderTraversal(TreeNode* root) {
vector<int> result;
//递归
//search(root, result);
//迭代
stack<TreeNode*> st;
if (root == NULL) return result;
st.push(root);
while (!st.empty()) {
TreeNode* node = st.top();
st.pop();
result.push_back(node->val);
if (node->left) st.push(node->left); // 相对于前序遍历,这更改一下入栈顺序 (空节点不入栈)
if (node->right) st.push(node->right); // 空节点不入栈
}
reverse(result.begin(), result.end()); // 将结果反转之后就是左右中的顺序了
return result;
}
};
/**
* 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:
void search(TreeNode* node, vector<int>& result){
if(!node)
return;
search(node->left, result);
result.push_back(node->val);
search(node->right, result);
}
vector<int> inorderTraversal(TreeNode* root) {
vector<int> result;
//递归法
//search(root, result);
//迭代法
stack<TreeNode*> stack_1;
TreeNode* cur = root;
while(cur != NULL || !stack_1.empty()){
if(cur != NULL){
stack_1.push(cur);
cur = cur->left;
}else{
cur = stack_1.top();
stack_1.pop();
result.push_back(cur->val);
cur = cur->right;
}
}
return result;
}
};
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异