leetcode 94: 二叉树的中序遍历

方法一:使用递归的方式   比较简单

std::vector<int>a;

std::vector<int> inorderTraversal(TreeNode* root) {
    if(root){
        inorderTraversal(root->left);
        a.push_back(root->val);
        inorderTraversal(root->right);
    }
    return a;
}

方法二:使用迭代的方式   即使用堆栈

std::vector<int> inorderTraversal(TreeNode* root) {
    std::vector<int>a;
    if(root==NULL)return a;
    std::stack<TreeNode*>s;
    while(!s.empty()||root!=NULL){
        while(root!=NULL){
            s.push(root);
            root=root->left;
        }
        if(!s.empty()){
            TreeNode*p=s.top();
            s.pop();
            a.push_back(p->val);    
            root=p->right;
        }
    }
    return a;
}

猜你喜欢

转载自blog.csdn.net/u013263891/article/details/82990182