代码:
- #include "stdafx.h"
- #include <iostream>
- #include <deque>
- using namespace std;
- struct BinaryTreeNode
- {
- int m_nValue;
- BinaryTreeNode *m_pLeft;
- BinaryTreeNode *m_pRight;
- };
- void PrintFromTopToDown(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);
- }
- }
- }
- //以先序的方式构建二叉树,输入-1表示结点为空
- 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;
- }