145. 二叉树的后序遍历
class Solution { public: vector<int> res; void Tracking(TreeNode* root) { if(root==nullptr) return; Tracking(root->left); Tracking(root->right); res.push_back(root->val); } vector<int> postorderTraversal(TreeNode* root) { Tracking(root); return res; } };
递归法没什么好说的,有手就行。难就难在迭代法,想了很久。
这是别人的代码。等别的时候再认真看看吧,旁边有两个sb,一个浑身散发着怪味,一个呼吸声贼大声。两个人是一起的。真的无法思考
class Solution { public: vector<int> postorderTraversal(TreeNode* root) { vector<int> result; if(root==NULL) return result; stack<TreeNode*> S; S.push(root); while(!S.empty()) { TreeNode *p=S.top(); S.pop(); if(p!=NULL) { S.push(p); S.push(NULL); if(p->right) S.push(p->right); if(p->left) S.push(p->left); } else { p=S.top(); S.pop(); result.push_back(p->val); } } return result; } };
标签:遍历,leetcode145,return,Tracking,二叉树,push,TreeNode,root,result From: https://www.cnblogs.com/uacs2024/p/16837287.html