题目:
给出一棵二叉树,返回其节点值的后序遍历。
样例
给出一棵二叉树 {1,#,2,3}
,
1 \ 2 / 3
返回 [3,2,1]
思路:
首先在函数的外面建立一个独立的向量,用于储存遍历过的元素,最终返回向量。前序遍历是先遍历左子数,将最后一个左节点的值放入向量中,再遍历右子树最遍历根节点,遍历后将节点的数值val放入之前建立的向量中。运用递归的思想重复相同的步骤。大问题和小问题的解决方式相同。
代码:
class Solution {
/**
* @param root: The root of binary tree.
* @return: Postorder in vector which contains node values.
*/
public:
std::vector<int> v;
vector<int> postorderTraversal(TreeNode *root) {
// write your code here
if(root)
{
postorderTraversal(root->left);
postorderTraversal(root->right);
v.push_back(root->val);
}
return v;
}
};
感想:
和前序遍历中序遍历相似。