2021-09-14华为OD面试题

2021-09-14华为OD面试题

2023年6月22日发(作者:)

2021-09-14华为OD⾯试题华为OD⾯试题⼿撕代码:⼆叉树分为⼴度遍历和深度遍历,在技术⼀⾯时遇到⼀个⼴度遍历的问题,题⽬如下:给定义⼀个⼆叉树,树的结构如下:需要遍历每⼀层节点的值,并输出如下结果:[ [5],[3, 7],[2, 4, 6, 8],[10, 11]]以前做的最多的都是深度遍历法,⼴度遍历有点懵懵的,后来想了下,就这样做了,什么也不说了直接上代码:1. 节点定义//节点的定义 public static class TreeNode { private int value; private TreeNode left = null; private TreeNode right = null; public TreeNode(int value, TreeNode left, TreeNode right) { = value; = left; = right; } public TreeNode(int value){ = value; } public void setLeftNode(TreeNode node) { = node; } public void setRightNode(TreeNode node){ = node; } public TreeNode getLeftNode(){ return ; } public TreeNode getRightNode(){ return ; } public int getData(){ return ; } }2. 创建树public static TreeNode createTree() { TreeNode firstLeft = new TreeNode(3); TreeNode firstRighe = new TreeNode(7); TreeNode root = new TreeNode(5, firstLeft, firstRighe); TreeNode leftSecondL = new TreeNode(2); TreeNode rightSecondL = new TreeNode(4); TreeNode leftSecondR = new TreeNode(6); TreeNode rightSecondR = new TreeNode(8); tNode(leftSecondL); htNode(rightSecondL); tNode(leftSecondR); htNode(rightSecondR); TreeNode leftThirdL = new TreeNode(10); TreeNode rightThirdL = new TreeNode(11); tNode(leftThirdL); htNode(rightThirdL); return root; }3、返回层级listpublic static List> treeList = new ArrayList<>();public static void wideSerch(TreeNode root){ List list=new ArrayList(); //链表⽤来存储每⼀层数据 Queue queue=new LinkedList();//当前层队列 Queue queue2=new LinkedList();//下⼀层队列 if(root==null){ return; } (root);//先把根节点⼊队,使队列不为空,进⼊循环 while(!y()) { TreeNode node = (); (a()); if (tNode() != null) (tNode()); if (htNode() != null) (htNode()); if (y()) { (list); list=new ArrayList(); //链表⽤来存储每⼀层数据 (queue2); (); } } }4、主函数输出listpublic static void main(String[] args) { TreeNode root=Tree();//调⽤了⾃⼰写的静态⽅法创建⼀棵树 wideSerch(root); for(List one:treeList){ n(one); }}总结:就是这么简单,⼀层⼀层的遍历。

发布者:admin,转转请注明出处:http://www.yc00.com/news/1687384871a6085.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信