[tree] preorder binary tree traversal
struct treenode {
int val;
treenode *left, *right;
treenode(int v) : val(v), left(NULL), right(NULL) {}
};
void pre_order(treenode *r) {
if(!r) return;
stack<treenode*> stk;
stk.push(r);
while(!stk.empty()) {
treenode *cur = stk.top();
stk.pop();
if(cur == NULL) continue;
cout << cur->val << endl;
stk.push(cur->right);
stk.push(cur->left);
}
}
int main()
{
treenode *r = new treenode(3);
r->left = new treenode(2);
r->right = new treenode(4);
r->left->left = new treenode(1);
pre_order(r);
}