[Leetcode 144, Medium] Binary Tree Preorder Traversal

Problem:

Given a binary tree, return the preorder traversal of its nodes' values.

For example:
Given binary tree {1,#,2,3},

   1
    \
     2
    /
   3

return [1,2,3].

Note: Recursive solution is trivial, could you do it iteratively?

Analysis:


Solutions:

C++:

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


Python:

發佈了194 篇原創文章 · 獲贊 4 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章