#include<stdio.h>#include<stack>#include<stdlib.h>using namespace std;struct ListNode{ int data; ListNode *lchild,*rchild;};ListNode* Createbst(){ int data; scanf("%d",&data); if(data!=-1) { ListNode* root=(ListNode*)malloc(sizeof(ListNode)); root->lchild=root->rchild=NULL; root->data=data; root->lchild=Createbst(); root->rchild=Createbst(); return root; } else return NULL;}void PreOrder(ListNode *root){ stack<ListNode*> s; ListNode *p=root; while(p!=NULL || !s.empty()) { while(p!=NULL) { printf("%d",p->data); s.push(p); p=p->lchild; } if(!s.empty()) { p=s.top(); s.pop(); p=p->rchild; } }}int main(){ ListNode* root; root=Createbst(); PreOrder(root); return 0;}
Sequential Traversal
void PreOrder(ListNode*root){ stack<ListNode*>s; ListNode* p=root; while(p!=NULL || !s.empty()) { while(p!=NULL) { s.push(p); p=p->lchild; } if(!s.empty()) { p=s.top(); s.pop(); printf("%d",p->data); p=p->rchild; } }}
Non-Recursive Implementation of binary tree traversal