0
点赞
收藏
分享

微信扫一扫

94. 二叉树的中序遍历(二叉树)(Leetcode刷题笔记)

94. 二叉树的中序遍历(二叉树)(Leetcode刷题笔记)

https://lunan0320.cn

文章目录

题目

给定一个二叉树的根节点 root ,返回它的 中序 遍历。

解题思路 C++(递归法)

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    //中序的递归过程
    void traversal(TreeNode* root, vector<int>& res){
        //终止条件
        if(!root) return;
        //左、中、右的顺序
        traversal(root->left, res);
        res.push_back(root->val);
        traversal(root->right, res);
    }
    vector<int> inorderTraversal(TreeNode* root) {
        vector<int> res;
        traversal(root, res);
        return res;
    }
};

解题思路 C++(迭代法)

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
 class Solution{
public:
    vector<int> inorderTraversal(TreeNode* root){
        vector<int> res;
        stack<TreeNode*> st;
        //root为空就直接返回
        if(!root) return res;
        //设置指针ptr用于遍历
        TreeNode* ptr = root;
        //指针不为空或者栈不为空
        while(ptr!=nullptr || !st.empty()){
            //如果指针不为空
            if(ptr){
                //就一直将左子树入栈,并指针移到左子树上
                st.push(ptr);
                ptr = ptr->left;
            }else{
                //指针为空说明到了叶子结点,需要回溯
                ptr = st.top();
                st.pop();
                //此时指针回溯到的入栈
                res.push_back(ptr->val);
                //指针移到右子树上
                ptr = ptr->right;
            }
        }
        return res;
    }
 };

算法效率

举报

相关推荐

0 条评论