【leetcode】-94-144-二叉树的中序遍历-先序遍历

 

 递归算法没什么好说的,非递归算法的前中后序遍历都是一个模板

中序遍历

   vector<int> inorderTraversal(TreeNode* root) {
        vector<int> res;
        //中序遍历 左根右
        stack<TreeNode*> s;
        TreeNode *p = root;
        
        while (!s.empty() || p != NULL)
        {
            if (p){
                s.push(p);
                p=p->left;
            }
            else{
                p=s.top();
                res.push_back(p->val);//出栈的时候访问
                s.pop();
                p=p->right;
            }
        }
        return res;

    }

先序遍历

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

猜你喜欢

转载自blog.csdn.net/qq_39328436/article/details/113702751