二叉树迭代遍历

来源:互联网 发布:淘宝 不良资产 在哪里 编辑:程序博客网 时间:2024/06/06 17:16
struct TreeNode {     int val;     TreeNode *left;     TreeNode *right;     TreeNode(int x) : val(x), left(NULL), right(NULL) {} };/*前序*/vector<int> preorderTraversal(TreeNode *root) {    vector<int> result;    if(!root) return result;    stack<TreeNode*> stack;    stack.push(root);    TreeNode* cur = NULL;    while(!stack.empty())    {        cur = stack.top();        result.push_back(cur -> val);        stack.pop();        if(cur -> right) stack.push(cur -> right);        if(cur -> left) stack.push(cur -> left);    }    return result;    } /*中序*/ vector<int> inorderTraversal(TreeNode* root) {    vector<int> result;    if(!root) return result;    stack<TreeNode*> stack;    TreeNode* cur = root;    while(cur != NULL || !stack.empty())    {        if(cur)        {            stack.push(cur);            cur = cur -> left;        }        else        {            cur = stack.top();            result.push_back(cur -> val);            stack.pop();            cur = cur -> right;        }    }    return result;}/*后序*/vector<int> postorderTraversal(TreeNode* root) {    vector<int> result;    if(!root) return result;    stack<TreeNode*> stack;    stack.push(root);    TreeNode* cur = NULL;    while(!stack.empty())    {        cur = stack.top();        if(cur -> left == NULL && cur -> right == NULL)        {            result.push_back(cur -> val);            stack.pop();        }        else        {            if(cur -> right)            {                stack.push(cur -> right);                cur -> right = NULL;            }            if(cur -> left)            {                stack.push(cur -> left);                cur -> left = NULL;            }        }    }    return result;}
0 0
原创粉丝点击