# Include "stdafx. h "# include <iostream >#include <deque> using namespace std; struct BinaryTreeNode {int m_nValue; BinaryTreeNode * m_pLeft; BinaryTreeNode * m_pRight;}; void encode (BinaryTreeNode * pRoot) {if (pRoot = NULL) {return;} deque <BinaryTreeNode *> myDeque; myDeque. push_back (pRoot); while (! MyDeque. empty () {BinaryTreeNode * pTop = myDeque. front (); cout <pTop-> m_nValue <""; myDeque. pop_front (); if (pTop-> m_pLeft! = NULL) {myDeque. push_back (pTop-> m_pLeft);} if (pTop-> m_pRight! = NULL) {myDeque. push_back (pTop-> m_pRight) ;}}// construct a binary tree in the First Order. Input-1 indicates that the node is empty void CreateBinaryTree (BinaryTreeNode * & pRoot) {int nNodeValue = 0; cin> nNodeValue; if (-1 = nNodeValue) {return;} else {pRoot = new BinaryTreeNode (); pRoot-> m_nValue = nNodeValue; createBinaryTree (pRoot-> m_pLeft); CreateBinaryTree (pRoot-> m_pRight) ;}} void PrintInOrder (BinaryTreeNode * & pRoot) {if (pRoot! = NULL) {PrintInOrder (pRoot-> m_pLeft); cout <pRoot-> m_nValue <""; PrintInOrder (pRoot-> m_pRight );}} int _ tmain (int argc, _ TCHAR * argv []) {BinaryTreeNode * pRoot = NULL; CreateBinaryTree (pRoot); PrintInOrder (pRoot); cout <endl; printFromTopToDown (pRoot); cout <endl; system ("pause"); return 0 ;}