题目:二叉树的中序遍历
非常基础的一个遍历,感觉没什么好说的….
首先确定递归函数的参数和返回值: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}