您的位置:首页 > 职场人生

面试题23 从上往下打印二叉树

2014-09-12 19:33 302 查看




代码:

[cpp] view
plaincopy

#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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: