zoukankan      html  css  js  c++  java
  • 从上到下打印二叉树——层序遍历二叉树

    题目:从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印

    例如输入

          8
        / 
       6    10
      /     /
     5  7   9  11

    输出8   6   10   5   7   9   11。

    二叉树结点的定义如下:

    struct BinaryTreeNode
    {
        int             m_nValue;
        BinaryTreeNode *m_pLeft;
        BinaryTreeNode *m_pRight;
    };

    从上到下打印二叉树的规律:每一次打印一个结点的时候,如果该结点有子结点,则把该结点的子结点放到一个队列的末尾。接下来到队列的头部取出最早进入队列的结点,重复前面的打印操作,直至队列中所有的结点都被打印出来为止。

    既然我们已经确定数据容器是一个队列了,现在的问题就是如何实现队列。实际上我们无需自己动手实现,因为STL已经为我们实现了一个很好的deque(两端都可以进出的队列)。下面是用deque实现的参考代码:

    void PrintFromTopToBottom(BinaryTreeNode *pTreeRoot)
    {
    	if(!pTreeRoot)
    		return;
    
    	std::deque<BinaryTreeNode*> dequeTreeNode;
    
    	dequeTreeNode.push_back(pTreeRoot);
    
    	while(dequeTreeNode.size())
    	{
    		BinaryTreeNode *pNode = dequeTreeNode.front();
    		dequeTreeNode.pop_front();
    
    		printf("%d " , pNode->m_nValue);
    
    		if(pNode->m_pLeft)
    			dequeTreeNode.push_back(pNode->m_pLeft);
    
    		if(pNode->m_pRight)
    			dequeTreeNode.push_back(pNode->m_pRight);
    	}
    }
    

      

  • 相关阅读:
    wp8 入门到精通
    C# 从入门到精通
    wp8 json2csharp
    wp8 安装.Net3.5
    delphi资源文件制作及使用详解
    delphi弹出选择对话框选择目录SelectDirectory 函数
    delphi 判断WIN8 , WIN8.1 , WIN10 系统版本
    外壳扩展创建快捷方式和获取快捷方式的目标对象
    文本究竟是使用哪种字
    用Delphi创建服务程序
  • 原文地址:https://www.cnblogs.com/heyonggang/p/3405282.html
Copyright © 2011-2022 走看看