`

程序员面试题精选100题(12)-从上往下遍历二元树

阅读更多
题目:输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。
例如输入

      8
    /  \
   6    10
  /\     /\
5  7   9  11

输出8   6   10   5   7   9   11。

思路: 使用入队的操作即可


///////////////////////////////////////////////////////////////////////
// Print a binary tree from top level to bottom level
// Input: pTreeRoot - the root of binary tree
///////////////////////////////////////////////////////////////////////
void PrintFromTopToBottom(BTreeNode *pTreeRoot)
{
      if(!pTreeRoot)
            return;

      // get a empty queue
      deque<BTreeNode *> dequeTreeNode;

      // insert the root at the tail of queue
      dequeTreeNode.push_back(pTreeRoot);

      while(dequeTreeNode.size())
      {
            // get a node from the head of queue
            BTreeNode *pNode = dequeTreeNode.front();
            dequeTreeNode.pop_front();

            // print the node
            cout << pNode->m_nValue << ' ';

            // print its left child sub-tree if it has
            if(pNode->m_pLeft)
                  dequeTreeNode.push_back(pNode->m_pLeft);
            // print its right child sub-tree if it has
            if(pNode->m_pRight)
                  dequeTreeNode.push_back(pNode->m_pRight);
      }
}
分享到:
评论

相关推荐

    程序员面试题精选100题-何海涛

    《程序员面试题精选100题—何海涛》是一份详实的IT面试准备资料,由何海涛整理发布,旨在帮助应届毕业生和求职者准备面向微软、谷歌等知名科技公司的面试。此资料不仅收录了精选的100道面试题目,还提供了详细的解题...

    程序员面试题精选100题

    程序员面试题精选100题 本资源是程序员面试题精选100题,涵盖了算法、数据结构、操作系统、计算机网络、数据库等多个领域。今天,我们将深入分析其中的一道题目,即将二元查找树转换成排序的双向链表。 知识点一:...

    程序员面试题精选100题.doc

    对于程序员面试,理解并能熟练应用这类问题的解决方案,展示了解数据结构和算法的能力,是评估应聘者编程技能的重要标准。同时,能清晰解释和分析递归过程,也是考察逻辑思维和问题解决能力的关键。

    程序员面试题精选100题(经典!)

    具体来说,文档中详细讨论了一个在程序员面试中常见的算法问题:如何将二元查找树(Binary Search Tree,BST)转换为一个排序的双向链表。这是一个涉及树的遍历、指针操作、递归思维的经典算法问题。下面将详细介绍...

    程序员面试题精选100题.docx

    本文档概述了程序员面试题精选100题,涵盖了C++面试题和笔试题,其中有一道典型的题目是将二元查找树转换成排序的双向链表。 知识点一:二元查找树(Binary Search Tree) * 二元查找树是一种特殊的树数据结构,它...

    程序员面试题精选100题【数据结构 /算法】

    【程序员面试题精选100题【数据结构 /算法】】是针对求职程序员精心挑选的一系列面试题目,涵盖了数据结构和算法两大核心领域。这些题目旨在帮助应聘者提高面试技巧,提升对技术的理解,以便在激烈的就业市场竞争中...

    程序员面试题精选100题(自己整理)

    - 使用中序遍历遍历整个二元查找树,因为中序遍历会按照升序顺序访问节点。 - 每访问一个节点,将其添加到已转换的链表的末尾,同时更新前一个节点的指针,指向当前节点。 - 当遍历完所有节点后,整个树就转换成...

    程序员面试题精选程序员面试题精选

    在IT行业中,数据结构与算法是程序员面试中的常见考点。二元查找树(Binary Search Tree, BST)是一种特殊的二叉树结构,它的每个节点具有以下特性:左子树上的所有节点值均小于它的根节点值;右子树上的所有节点值均...

    程序员面试题精选100题.pdf

    这里我们重点讨论的是如何将一个二元查找树(Binary Search Tree, BST)转换成一个排序的双向链表,这是一个典型的面试题,考察了对数据结构的理解和递归算法的应用。 二元查找树是一种特殊的二叉树,每个节点的值...

    程序员面试题精选100题与解法

    这个面试题要求在不创建新节点的情况下,将给定的二元查找树转换成一个排序的双向链表。有两种主要方法实现这一转换: - **思路一**: - 递归方法:从根节点开始,首先递归处理左子树,将左子树转换为一个有序...

    程序员面试题精选100题目

    在程序员面试中,掌握各种算法和数据结构是至关重要的,尤其是对于二元查找树(BST)的处理。本题目的核心是将一棵二元查找树转化为一个排序的双向链表,而无需创建新的节点,仅通过调整节点间的指针实现。这种转换...

    程序员面试题精选100题完整版.pdf,这是一份不错的文件

    中序遍历二元查找树的顺序是:左子树 -&gt; 节点 -&gt; 右子树,对于排序树来说,中序遍历的结果是一个升序序列。 6. 结构体(Struct): 在C/C++中,结构体用于封装多个不同类型的数据,如BSTreeNode结构体封装了节点...

Global site tag (gtag.js) - Google Analytics