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