1. 题目

Leetcode#94. 二叉树的中序遍历,C++实现

2. 方法一递归

2.1. 代码

class Solution {
public:
    vector<int> inorderTraversal(TreeNode* root) {
        dfs(root);
        return temp;
    }
    vector<int> temp;
    void dfs(TreeNode* root){
        if(root==NULL) return;
        dfs(root->left);
        temp.push_back(root->val);
        dfs(root->right);
    }
};

2.2. 结果

Leetcode#94. 二叉树的中序遍历,C++实现

3. 方法一非递归

3.1. 代码

class Solution {
public:
    vector<int> inorderTraversal(TreeNode* root) {
        vector<int> temp;
        if(root==NULL) return temp;
        stack<TreeNode*> nodetempstack;
        while(root!=NULL||!nodetempstack.empty()){
            if(root!=NULL){
                nodetempstack.push(root);
                root=root->left;
            }
            else{
                temp.push_back(nodetempstack.top()->val);
                root=nodetempstack.top()->right;
                nodetempstack.pop();
            }
        }
        return temp;
    }
};

3.2. 结果

Leetcode#94. 二叉树的中序遍历,C++实现

相关文章: