[LeetCode] Binary Tree Preorder Traversal

来源:互联网 发布:淘宝店铺怎么起名字 编辑:程序博客网 时间:2024/05/16 08:14

问题:

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?

分析:

递归算法就不说了,比较简单。很多binary tree的问题都可以用递归细想解决。同样地,很多binary tree的问题当需要把递归转化为非递归,那往往会用到stack或者queue等数据结构。这道题可以用stack来解决。preorder的意思就是先parent,后children。

代码:

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


0 0
原创粉丝点击