当前位置: 首页 > news >正文

大型门户网站开发滁州做网站的

大型门户网站开发,滁州做网站的,黑龙江省建设工程交易中心网站,韩国电信 网站题目描述 从上到下按层打印二叉树#xff0c;同一层的节点按从左到右的顺序打印#xff0c;每一层打印到一行。 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回其层次遍历结果#xff1a; [3,9,20,15,7] 提示#xff1a; 节…    题目描述 从上到下按层打印二叉树同一层的节点按从左到右的顺序打印每一层打印到一行。 例如: 给定二叉树: [3,9,20,null,null,15,7],     3    / \   9  20       /  \    15   7     返回其层次遍历结果 [3,9,20,15,7] 提示 节点总数 1000 思路 这个题目的意思很明确就是从根节点开始一层一层打印节点而且节点顺序是从左到右。以上面示例为例3为根节点之后打印它的左右节点920之后再打印20的子节点157。全部打印完成结束。 这道题有点类似图算法中的广度优先搜索先从顶端开始依次遍历图的下一层节点下一层节点遍历完成接着遍历下下一层。仅仅依赖树结构的左右节点关系然后递归遍历我们无法得到最终结果因为随着层数的增加兄弟节点之间没有必然关系他们无法保证从左到右来遍历。 这里我们需要借助一个队列来存放遍历过的节点这样每遍历依次后续的遍历我们从队列开头取元素这样就可以保证按照层级和左右顺序来打印树节点。 代码 package com.xxx.example;import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import java.util.Queue;public class Offer32PrintTreeNode {private static TreeNode root;private static ListListInteger nodeList new ArrayList();public static void main(String[] args) {TreeNode treeNode new TreeNode(3);TreeNode treeNode1 new TreeNode(9);TreeNode treeNode2 new TreeNode(20);TreeNode treeNode3 new TreeNode(15);TreeNode treeNode4 new TreeNode(7);root treeNode;treeNode2.left treeNode3;treeNode2.right treeNode4;root.left treeNode1;root.right treeNode2;int[] result levelOrder(root);for(int i0;iresult.length;i) {System.out.print(result[i] );}System.out.println();}public static int[] levelOrder(TreeNode root) {if (root null)return new int[0];QueueTreeNode queue new LinkedList();ArrayListInteger list new ArrayList();queue.add(root);while (!queue.isEmpty()) {TreeNode curNode queue.poll();list.add(curNode.val);if (curNode.left ! null)queue.add(curNode.left);if (curNode.right ! null)queue.add(curNode.right);}return list.stream().mapToInt(Integer::intValue).toArray();}}class TreeNode {int val;TreeNode left;TreeNode right;TreeNode(int value) {this.val value;this.left null;this.right null;}Overridepublic String toString() {return val ;} }还有一种办法其实就是利用深度优先搜索的思想解决这个似乎有点玄妙这里明明是要广度优先搜索怎么还利用起深度优先搜索呢其实是这样的这里按照深度优先搜索我们只是把搜到的数据打上标签这个标签就是它的层次也叫深度每个深度的节点我们保存到同样深度的map映射里。最后我们遍历map得到所有按照层次组织的节点这样就是从上到下从左到右打印二叉树节点。  深度优先搜索  package com.xxx.tutorial;import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class TreeNodeTraversal {private static MapInteger, ListInteger map new HashMap();private static int max -1;private static int cnt 0;public static void main(String[] args) {TreeNode node0 new TreeNode(3);TreeNode node1 new TreeNode(9);TreeNode node2 new TreeNode(20);TreeNode node3 new TreeNode(15);TreeNode node4 new TreeNode(7);node0.left node1;node0.right node2;node2.left node3;node2.right node4;int[] res traversal(node0);for (int i 0; i res.length; i) {System.out.print(res[i] );}System.out.println();}public static int[] traversal(TreeNode root) {dfs(root, 0);int[] ans new int[cnt];for (int i 0, idx 0; i max; i) {for (int x : map.get(i))ans[idx] x;}return ans;}public static void dfs(TreeNode node, int depth) {if (node null) return;max Math.max(max, depth);cnt;dfs(node.left, depth 1);ListInteger list map.getOrDefault(depth, new ArrayList());list.add(node.val);map.put(depth, list);dfs(node.right, depth 1);}public static class TreeNode {int val;TreeNode left;TreeNode right;public TreeNode(int value) {this.val value;this.left null;this.right null;}} }这里通过递归调用我们能遍历完所有节点并按照深度层次保存各自深度的节点。  这个思路很巧妙它利用深度层次来映射对应的节点最后我们遍历map映射得到所有节点他们的顺序正好是从上到下从左到右。 剑指offer打印二叉树还有另一个题目就是按照层次打印二叉树就是[[3],[9,20],[15,7]]相信经过上面的深度优先搜索大家也许有一些想法这个代码或许简单改造一下就可以了。
http://www.w-s-a.com/news/561669/

相关文章:

  • 一个主机可以建设多少个网站山东高端网站建设
  • 长沙网站建设搭建网络营销做得好的公司
  • 如何做网站的后台管理石家庄seo关键词排名
  • 给自己公司做个网站山东做外贸网站的公司
  • 张家港网站建设培训江苏省建设工程网站系统
  • html个人网站桂林建站
  • 湛江网站优化快速排名wordpress文章页面宽度
  • 自己建网站怎么弄唯品会一家专门做特卖的网站
  • 做文化传播公司网站做搜狗pc网站点
  • 免费的黄冈网站有哪些平台可以聊天呢要查询一个网站在什么公司做的推广怎么查
  • 凡客建站登录入口网站建设先进部门评选标准
  • 响应式设计 手机网站政务中心建设网站
  • 如何做卖衣服的网站网站登录接口怎么做
  • 网站源码下载了属于侵权吗499全包网站建设
  • 怎样创建网站信息平台网络推广官网首页
  • 网站建设的课程网站 逻辑结构
  • 开通企业网站搬瓦工暗转wordpress
  • 成都网站建设有名的公司怎么做出有品牌感的网站
  • 中国网站的建设淘宝数据网站开发
  • 深圳建站网站模板wordpress 文章最长
  • 服务器建立网站建网站做seo
  • 帮人做彩票网站支付接口网上请人做软件的网站
  • 万全网站建设wl17581做旅游广告在哪个网站做效果好
  • 钢城网站建设安徽省住房和城乡建设厅网站
  • 协会网站建设方案大良营销网站建设好么
  • 网站引导页一般是什么格式网页设计师的应聘岗位
  • 构建网站空间网站开发与维护招聘
  • 网站建设的网页怎么做番禺网站开发哪家强
  • 网站开发是程序员吗百度网盘下载电脑版官方下载
  • 中国电力建设集团网站杭州网站运营