• 面试题21:从上往下打印二叉树


    代码:

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



  • 相关阅读:
    关于MAC下重置MYSQL密码
    MAC下配置PHPStorm环境
    Java中从控制台输入数据的几种常用方法
    IDEA 指定入口class
    Python中的除法
    Python 学习笔记
    SQLiteDatabase中query、insert、update、delete方法参数说明
    listview与sqlite数据绑定
    java中HashMap详解
    只要有信心,人永远不会挫败
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3206379.html
Copyright © 2020-2023  润新知