题:Given a binary tree, return the postorder traversal of its nodes' values.
解答:
一个简单解法,利用栈:
1.root入栈
2.访问栈顶(加入容器),栈顶出栈,栈顶的左孩子入栈(有的话),栈顶的右孩子入栈*(有的话)
3.重复2,直到栈空
4.把得到的容器反转即可
代码:
class Solution {
public:
vector<int> postorderTraversal(TreeNode *root) {
vector<int> Result;
if(root == NULL) return Result;
vector<TreeNode*> visited;
stack<TreeNode*> Stack;
Stack.push(root);
while(!Stack.empty())
{
TreeNode *node = Stack.top();
Result.push_back(node->val);
Stack.pop();
if(node->left) Stack.push(node->left);
if(node->right) Stack.push(node->right);
}
reverse(Result.begin(),Result.end());
return Result;
}
};