leetcode145-二叉树的后序遍历 ps:后序遍历的迭代法感觉远远比前序中序的迭代法要难
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; } };
递归法没什么好说的,有手就行。难就难在迭代法,想了很久。
这是别人的代码。
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; } };