阜新网站推广,seo快速推广窍门大公开,wordpress静态页,互联网营销服务刷算法题#xff1a;
第一遍#xff1a;1.看5分钟#xff0c;没思路看题解
2.通过题解改进自己的解法#xff0c;并且要写每行的注释以及自己的思路。
3.思考自己做到了题解的哪一步#xff0c;下次怎么才能做对(总结方法)
4.整理到自己的自媒体平台。
5.再刷重复的类…刷算法题
第一遍1.看5分钟没思路看题解
2.通过题解改进自己的解法并且要写每行的注释以及自己的思路。
3.思考自己做到了题解的哪一步下次怎么才能做对(总结方法)
4.整理到自己的自媒体平台。
5.再刷重复的类似的题目根据时间和任务安排刷哪几个板块
6.用c语言 都刷过一遍了 就刷中等
一.题目
给你一棵二叉树的根节点 root 返回其节点值的 后序遍历 。
示例 1 输入root [1,null,2,3]
输出[3,2,1]示例 2
输入root []
输出[]示例 3
输入root [1]
输出[1]提示
树中节点的数目在范围 [0, 100] 内-100 Node.val 100
进阶递归算法很简单你可以通过迭代算法完成吗
二、反思
1.自己的解法
/*** 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:vectorint postorderTraversal(TreeNode* root) {vectorint res;inorder(root,res);return res;}void inorder(TreeNode* root,vectorint res){if(!root){return ;}inorder(root-left,res);inorder(root-right,res);res.push_back(root-val);}
};
2.题目的解法
class Solution {
public:void addPath(vectorint vec, TreeNode *node) {int count 0;while (node ! nullptr) {count;vec.emplace_back(node-val);node node-right;}reverse(vec.end() - count, vec.end());}vectorint postorderTraversal(TreeNode *root) {vectorint res;if (root nullptr) {return res;}TreeNode *p1 root, *p2 nullptr;while (p1 ! nullptr) {p2 p1-left;if (p2 ! nullptr) {while (p2-right ! nullptr p2-right ! p1) {p2 p2-right;}if (p2-right nullptr) {p2-right p1;p1 p1-left;continue;} else {p2-right nullptr;addPath(res, p1-left);}}p1 p1-right;}addPath(res, root);return res;}
};作者力扣官方题解
链接https://leetcode.cn/problems/binary-tree-postorder-traversal/solutions/431066/er-cha-shu-de-hou-xu-bian-li-by-leetcode-solution/
来源力扣LeetCode
著作权归作者所有。商业转载请联系作者获得授权非商业转载请注明出处。 3.思路的异同
借鉴的是中序遍历我靠这个前序、中序、后序这个名字好像有点顾名思义取得太巧妙了。
三.进步的地方 对于递归的掌握越来越清晰了。