struct Node
{
Node(int v) : val(v)
{
}
Node* l = nullptr;
Node* r = nullptr;
int val;
};
void bfs(Node* n)
{
queue<Node*> que;
que.push(n);
while (que.size())
{
n = que.front();
cout << n->val << "\t";
que.pop();
if(n->l) que.push(n->l);
if(n->r) que.push(n->r);
}
}
void dfs(Node* n)
{
stack<Node*> stk;
stk.push(n);
while (stk.size())
{
n = stk.top();
cout << n->val << "\t";
stk.pop();
if (n->r) stk.push(n->r);
if (n->l) stk.push(n->l);
}
}
void main()
{
Node* n1 = new Node(1);
Node* n2 = new Node(2);
Node* n3 = new Node(3);
n1->l = n2;
n1->r = n3;
Node* n4 = new Node(4);
Node* n5 = new Node(5);
n2->l = n4;
n2->r = n5;
Node* n6 = new Node(6);
Node* n7 = new Node(7);
n3->l = n6;
n3->r = n7;
bfs(n1);
cout << "\n\n";
dfs(n1);
getchar();
}