题目要求
给定一个二叉树,返回它的中序 遍历。
示例
输入: [1,null,2,3]
1
\
2
/
3
输出: [1,3,2]
进阶: 递归算法很简单,你可以通过迭代算法完成吗?
解答:
迭代算法可用栈保存曾经路过的中序结点,回溯时可用bool型变量屏蔽对左子树的访问,避免发生死循环。
代码及分析注释如下:
#include<iostream>
#include<vector>
using namespace std;
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {
}
};
//中序遍历递归算法
void inOrder(TreeNode* root, vector<int>& vi) {
if (root != NULL) {
inOrder(root->left, vi<