题目:二叉树的中序遍历

非常基础的一个遍历,感觉没什么好说的….

首先确定递归函数的参数和返回值:void–因为这里直接传入了一个vector的引用

然后明确递归终止的条件:当前节点为空

这也就意味着当前分支上的所有节点都已经遍历完了,所以应该进入下一个分支

比如中序遍历,顺序是“左中右”,所以inorder函数中就是先递归左分支,再将中间节点压入vector,最后遍历右分支

其他两个遍历以此类推

 1void inorder(TreeNode* root, std::vector<int>& traversal)
 2{
 3    if(root == NULL) return;
 4    inorder(root->left, traversal);
 5    traversal.push_back(root->val);
 6    inorder(root->right, traversal);
 7}
 8
 9vector<int> inorderTraversal(TreeNode* root)
10{
11    std::vector<int> traversal;
12
13    inorder(root, traversal);
14    return traversal;
15}