CC面试宝典二叉树的层序遍历实现

北京最佳手足癣医院 http://baidianfeng.39.net/a_yyxw/210410/8833710.html

引言

二叉树,历来是C/C++软件工程师面试必备内容,之所以如此受欢迎,主要是因为二叉树的考查可易可难,企业可以根据考查重点,应聘者的水平要求方面来出题,而且都是二叉树方面的东西;另外,通过二叉树的考查,也可以看出应聘者对于数据结构、代码优化能力等方面的水平。

本节将介绍二叉树的另一个考点——二叉树的层序遍历

需求介绍:给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历)例如:给定的二叉树是{3,9,20,#,#,15,7},

该二叉树层序遍历的结果是[[3],[9,20],[15,7]

]

提示:0=二叉树的结点数=

测试样例如下:

示例1

输入:

{1,2}

返回值:

[[1],[2]]

示例2

输入:

{1,2,3,4,#,#,5}

返回值:

[[1],[2,3],[4,5]]

代码设计思路:该代码可以通过队列来实现,既然是层序遍历,说明整个遍历过程只需要从根节点开始,然后下一层从左到右的进行输出即可。

示例代码如下:

structTreeNode{  intval;  structTreeNode*left;  structTreeNode*right;};vectorvectorintlevelOrder(TreeNode*root){vectorvectorintres;queueTreeNode*q;if(nullptr==root){returnres;}q.push(root);while(!q.empty()){vectorinttmp;intn=q.size();for(inti=0;in;i++){TreeNode*node=q.front();q.pop();tmp.push_back(node-val);if(node-left)q.push(node-left);if(node-right)q.push(node-right);}res.push_back(tmp);}returnres;}

购买专栏解锁剩余16%


转载请注明:http://www.aierlanlan.com/grrz/4234.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了