BM25. 二叉树的后序遍历
描述
示例1
输入:
{1,#,2,3}
输出:
[3,2,1]
说明:
如题面图示例2
输入:
{1}
输出:
[1]
C 解法, 执行用时: 2ms, 内存消耗: 396KB, 提交时间: 2022-05-29
/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; * * C语言声明定义全局变量请加上static,防止重复定义 */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param root TreeNode类 * @return int整型一维数组 * @return int* returnSize 返回数组行数 */ void postOrder(struct TreeNode* node, int* ret, int* returnSize) { if(!node) return; postOrder(node->left, ret, returnSize); postOrder(node->right, ret, returnSize); ret[(*returnSize)++] = node->val; } int* postorderTraversal(struct TreeNode* root, int* returnSize){ int* ret= (int*)malloc(sizeof(int) * 100); *returnSize = 0; postOrder(root, ret, returnSize); return ret; }
C++ 解法, 执行用时: 2ms, 内存消耗: 468KB, 提交时间: 2022-07-24
/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * }; */ class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param root TreeNode类 * @return int整型vector */ vector<int> postorderTraversal(TreeNode* root) { stack<TreeNode*> s; vector<int> res; TreeNode *t = root, *r=nullptr; while(!s.empty() || t) { while(t) { s.push(t); t = t->left; } t = s.top(); if (t->right && t->right!=r) { t = t->right; continue; } res.push_back(t->val); r = t; s.pop(); t = nullptr; } return res; } };
C++ 解法, 执行用时: 2ms, 内存消耗: 472KB, 提交时间: 2022-08-06
/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * }; */ class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param root TreeNode类 * @return int整型vector */ void postorder(TreeNode* root, vector<int>& res) { if (root != nullptr) { postorder(root->left, res); postorder(root->right, res); res.push_back(root->val); } } vector<int> postorderTraversal(TreeNode* root) { // write code here vector<int> res; postorder(root, res); return res; } };
C++ 解法, 执行用时: 2ms, 内存消耗: 540KB, 提交时间: 2022-04-17
/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * }; */ class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param root TreeNode类 * @return int整型vector */ vector<int> res; vector<int> postorderTraversal(TreeNode* root) { // write code here if (root == nullptr) return {}; dfs(root); return res; } void dfs(TreeNode* node) { if (node == nullptr) return; dfs(node->left); dfs(node->right); res.push_back(node->val); } };
C++ 解法, 执行用时: 2ms, 内存消耗: 580KB, 提交时间: 2022-03-13
/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * }; */ class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param root TreeNode类 * @return int整型vector */ vector<int> backvec; vector<int> postorderTraversal(TreeNode* root) { // write code here if(root != nullptr){ backOrder(root); } return backvec; } void backOrder(TreeNode* node){ if(node == nullptr){ return; } backOrder(node->left); backOrder(node->right); backvec.push_back(node->val); } };