二叉树的非递归中序遍历

来源:互联网 发布:bp神经网络java实现 编辑:程序博客网 时间:2024/05/05 06:44

输出二叉树的中序遍历序列,不允许使用递归
如[2,null,6,8],输出[2,8,6]
Binary Tree Inorder Traversal
借助栈,遍历二叉树
先让所有的左孩子结点入栈
再将右孩子结点入栈

/** * Definition for a binary tree node. * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    vector<int> inorderTraversal(TreeNode* root) {        vector<int> result;        stack<const TreeNode*> s;        const TreeNode *cur=root;        while(cur||!s.empty())        {            if(cur)            {                s.push(cur);                cur=cur->left;            }            else            {                cur=s.top();                s.pop();                result.push_back(cur->val);                cur=cur->right;            }        }        return result;    }};
0 0