本文主要是介绍第十六题(树的层序遍历),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。例如输入
8
/ \
6 10
/ \ / \
5 7 9 11
输出8 6 10 5 7 9 11
这道题是树的层序遍历,需要用到队列数据结构,思路是从先将根节点入队(为了保证后面循环操作的一致性),然后一直重复以下操作,直到队列为空:访问队首元素并出对,将其非空的左右孩子入队,看代码:
namespace MS100P_16
{//树的层序遍历struct TreeNode{int data;TreeNode* left;TreeNode* right;};void levelTraverse(TreeNode* root){if (root == NULL) return;TreeNode* p;queue<TreeNode*> tq; //使用stl的队列tq.push(root);while (!tq.empty()){p = tq.front();cout << p->data << " ";tq.pop();if (p->left != NULL) tq.push(p->left);if (p->right != NULL) tq.push(p->right);}cout << endl;}
}
这篇关于第十六题(树的层序遍历)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!