微软,Google面试题 (12) —— 从上往下遍历二叉树

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

例如输入

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

输出8   6   10   5   7   9   11。
解法:树是图的一种特殊的退化形式。本题就是一个广度优先遍历图的问题。首先把root放进一个队列。开始循环,当队列不为空的时候。pop并且打印队首元素。然后把对手元素的孩子节点从左到右依次push进队列。继续循环。void BSF(Node* root) { queue.push_back(root); while (!queue.empty()) { Node *temp = queue.front(); queue.pop(); if (!temp->left) { queue.push_back(temp->left); } if (!temp->right) { queue.push_back(temp->right); } print(temp); } }

你可能感兴趣的:(微软,Google面试题 (12) —— 从上往下遍历二叉树)