【leetcode 145. 二叉樹的後序遍歷】解題報告
阿新 • • 發佈:2019-05-01
中序 stack mage blank res tor tac 前序 top
前往二叉樹的:前序,中序,後序 遍歷算法
方法一:遞歸
vector<int> res; vector<int> postorderTraversal(TreeNode* root) { if (!root) return res; if (root->left) postorderTraversal(root->left); if (root->right) postorderTraversal(root->right); res.push_back(root->val); return res; }
方法二:非遞歸
vector<int> postorderTraversal(TreeNode* root) { vector<int> res; if (!root) return res; stack<TreeNode*> S; TreeNode* p=root, *r=nullptr; while (p||!S.empty()) {if (p) { S.push(p); p=p->left; } else { p=S.top(); if (p->right&&p->right!=r) p=p->right; else { S.pop(); res.push_back(p->val); r=p; p=nullptr; } } } return res; }
方法三:非遞歸
vector<int> postorderTraversal(TreeNode* root) { vector<int> res; if (!root) return res; stack<TreeNode*> S; TreeNode* p=root; S.push(p); while (!S.empty()) { p=S.top(); S.pop(); if (p->left) S.push(p->left); if (p->right) S.push(p->right); res.insert(res.begin(),p->val); } return res; }
【leetcode 145. 二叉樹的後序遍歷】解題報告