题目:
给出一棵二叉树,返回其节点值的后序遍历。
给出一棵二叉树 {1,#,2,3}
,
1 \ 2 / 3
返回 [3,2,1]
代码:
/**
* Definition of TreeNode:
* class TreeNode {
* public:
* int val;
* TreeNode *left, *right;
* TreeNode(int val) {
* this->val = val;
* this->left = this->right = NULL;
* }
* }
*/
class Solution {
/**
* @param root: The root of binary tree.
* @return: Postorder in vector which contains node values.
*/
public:
vector<int>ss;
vector<int> postorderTraversal(TreeNode *root) {
// write your code here
//if(root==NULL) {return NULL;}
//vector<int>ss;
//ss.clear();
//return postorder(root,ss);
//return ss;
if(root==NULL) return ss;
else{
postorderTraversal(root->left);
postorderTraversal(root->right);
ss.push_back(root->val);
}
return ss;
}
/*vector<int> postorder(TreeNode *root,vector<int>ss){
if(root==NULL) return ss;
else{
postorder(root->left,&ss);
postorder(root->right,&ss);
ss.push_back(root->val);
}
return ss;
}*/
};
感想:这道题我一开始没想着用递归写,老想着和以前一样,结果在top上总是无法处理,后来又想着在里面再调用另一个递归函数,可是在形参处理以及最后返回时总是不尽如人意,最后我在前面定义了ss,然后用常规递归写的,就过了。