二叉树的中序遍历

来源:互联网 发布:win10共享盘软件 编辑:程序博客网 时间:2024/06/15 02:08
给出一棵二叉树,返回其中序遍历
样例

给出二叉树 {1,#,2,3},

   1    \     2    /   3

返回 [1,3,2].

/** * Definition of TreeNode: * class TreeNode { * public: *     int val; *     TreeNode *left, *right; *     TreeNode(int val) { *         this->val = val; *         this->left = this->right = NULL; *     } * } */class Solution {    /**     * @param root: The root of binary tree.     * @return: Inorder in vector which contains node values.     */public:    vector<int> inorderTraversal(TreeNode *root) {        // write your code here        vector<int> result;        if (root == NULL)        {            return result;        }        stack<TreeNode*> values;        values.push(root);        TreeNode *last = NULL;        while (!values.empty())        {            TreeNode *top = values.top();            if (top->left != NULL)            {                if (top->left == last)                {                    result.push_back(top->val);                    values.pop();                    last = top;                    if (top->right != NULL)                    {                        values.push(top->right);                    }                }                else                {                    values.push(top->left);                }            }            else            {                result.push_back(top->val);                values.pop();                last = top;                if (top->right != NULL)                {                    values.push(top->right);                }            }        }        return result;    }};


0 0
原创粉丝点击