leetcode_94.二叉树的中序遍历

自闭症网瘾萝莉.ら 提交于 2020-01-10 11:12:03

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

示例:

输入: [1,null,2,3]
1

2
/
3

输出: [1,3,2]

进阶: 递归算法很简单,你可以通过迭代算法完成吗?

解析:这个应该是基础中的基础了,建议全文背诵(

class Solution {
public:
    vector<int> res;
    //递归
    vector<int> inorderTraversal(TreeNode* root,int) {
        if(root) helper(root);
        return res;
    }
    void helper(TreeNode* root){
        if(root->left) helper(root->left);
        res.push_back(root->val);
        if(root->right) helper(root->right);
    }
    //非递归
    vector<int> inorderTraversal(TreeNode* root){
        stack<TreeNode*> st;
        TreeNode* cur = root;
        while(cur||!st.empty()){
            if(cur){ 
                st.push(cur);
                cur = cur->left;
            }
            else{
                cur = st.top();
                st.pop();
                res.push_back(cur->val);
                cur = cur->right;
            }
        }
        return res;
    }
};
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!