二叉树非递归遍历

//前序遍历
class Solution {
public:
    /**
     * @param root: The root of binary tree.
     * @return: Preorder in vector which contains node values.
     */
    vector<int> preorderTraversal(TreeNode *root) {
        // write your code here
        stack<TreeNode*>stack;
        TreeNode *p = root;
        vector<int>array;
        while(!stack.empty() || p) {
            while (p) {
                array.push_back(p->val);
                stack.push(p);
                p = p->left;
            }
            
            if (!stack.empty()) {
                p = stack.top();
                stack.pop();
                p = p->right;
            }
        }
        return array;
    }
};

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容