Implements a pre-order traversal. See also sequential traversal of binary Tree inorder traversal
Recursion:
/** Definition for binary tree * struct TreeNode {* int val; * TreeNode *left; * TreeNode *right; * T Reenode (int x): Val (x), left (null), right (NULL) {} *}; */classSolution { Public: voidhelper144 (TreeNode *root, vector<int> &Perm) { if(!root)return; Perm.push_back (Root-val); helper144 (Root-Left , Perm); helper144 (Root-Right , perm); } Vector<int> Preordertraversal (TreeNode *root) {Vector<int>Perm; helper144 (root, perm); returnPerm; }};
Non-recursive:
/** Definition for binary tree * struct TreeNode {* int val; * TreeNode *left; * TreeNode *right; * T Reenode (int x): Val (x), left (null), right (NULL) {} *}; */classSolution { Public: Vector<int> Preordertraversal (TreeNode *root) {Vector<int>Perm; Stack<treenode *>STA; TreeNode*p =Root; while(!sta.empty () | |p) { while(P) {Perm.push_back (P-val); if(P-Right ) Sta.push (P-Right ); P= P-Left ; } if(!Sta.empty ()) {P=Sta.top (); Sta.pop (); } } returnPerm; }};
Leetcode Binary Tree Preorder traversal