首页 > 代码库 > Leetcode: Binary Tree Preorder Traversal

Leetcode: Binary Tree Preorder Traversal

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?

分析:迭代版先序遍历。用一个栈保存结点,压栈顺序为先右子树后左子树。时间复杂度为O(n),空间复杂度为O(h)。代码如下:

class Solution {public:    vector<int> preorderTraversal(TreeNode *root) {        vector<int> result;        if(!root) return result;                stack<TreeNode *> S;        S.push(root);                while(!S.empty()){            TreeNode *tmp = S.top();            result.push_back(tmp->val);            S.pop();            if(tmp->right) S.push(tmp->right);            if(tmp->left) S.push(tmp->left);        }                return result;    }};

 

Leetcode: Binary Tree Preorder Traversal