1. Topics
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 do it iteratively?
2. Solution 1
Class Solution {public: vector<int> preordertraversal (TreeNode *root) { & nbsp; vector<int> ans; deque<treenode*> node_list; if (root = NULL) return ans; Node_list.push_front (root); while (!node_list.empty ()) { TreeNode *cur = Node_list.back (); Node_list.pop_back (); ans.push_back (cur, Val); if (cur-right! = NULL) Node_list.push_back ( cur, right); if (cur-leFT! = NULL) node_list.push_back (cur, left); } return ans; };idea: The non-recursive way of First order traversal is also relatively easy to write, that is, breadth first or breathing traversal. Need a queue to support.
3. Solution 2
Class Solution {public: vector<int> path; void preorder (TreeNode *root) { if (!root) return; Path.push_back (root->val); if (root->left) preorder (root->left); if (root->right) preorder (root->right); } Vector<int> preordertraversal (TreeNode *root) { preorder (root); return path; };
idea: Recursion is simple, but very slow.
http://www.waitingfy.com/archives/1594
Leetcode Binary Tree Preorder traversal