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

个人博客网站制作教程江苏建新建设集团有限公司网站

个人博客网站制作教程,江苏建新建设集团有限公司网站,网站建设是怎样的,海淘手表网站从中序与后序遍历序列构造二叉树(Java) 大体思路:从后序数组中找到最后一个元素的值,即为当前节点并进行节点的创建,并在中序数组中找到该值所在索引(使用Map)。接着开始递归,后序数组倒着向前&#xff08…

从中序与后序遍历序列构造二叉树(Java)

大体思路:从后序数组中找到最后一个元素的值,即为当前节点并进行节点的创建,并在中序数组中找到该值所在索引(使用Map)。接着开始递归,后序数组倒着向前(所以递归应该先从右子树开始),当右子树遍历完(即不存在遍历区间时left>right)return。

问题分析

  1. 返回值:返回最终头节点;
  2. 参数:由于需要遍历区间,所以定义两个参数left、right,至于map, postorder作为全局变量使用。
/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {Map<Integer, Integer> map = new HashMap<>();int[] postorder;int postindex;public TreeNode buildTree(int[] inorder, int[] postorder) {this.postorder = postorder;postindex = postorder.length - 1;for(int i = 0; i < inorder.length; i++){map.put(inorder[i], i); // 通过值找索引(而且题目中表示值不会相同)}return treeBuild(0, postindex);}public TreeNode treeBuild(int left, int right //注意这个是inorder的左右区间 ){if(left > right){return null;}int rootval = postorder[postindex--];TreeNode root = new TreeNode(rootval); //创建节点int mid = map.get(rootval); //中序的切割点root.right = treeBuild(mid + 1, right);root.left = treeBuild(left, mid - 1);return root;}
}

从前序与中序遍历序列构造二叉树(Java)

思路分析:整体思路类似上一题,只不过这次先序遍历数组中的顺序是中左右,所以根节点是在最前边,同时递归时注意先左子树后右子树

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {Map<Integer, Integer> map = new HashMap<>();int[] preorder;int i = 0; // 记录先序数组中的中间节点的索引public TreeNode buildTree(int[] preorder, int[] inorder) {this.preorder = preorder;for(int i = 0; i < inorder.length; i++){map.put(inorder[i], i);}return fucTree(0, preorder.length - 1);}public TreeNode fucTree(int left, int right){if(left > right){return null;}int rootval = preorder[i++];TreeNode root = new TreeNode(rootval);int mid = map.get(rootval);root.left = fucTree(left, mid - 1);root.right = fucTree(mid + 1, right);return root;}
}
http://www.dtcms.com/wzjs/592756.html

相关文章:

  • 网站首页的快照更新慢.案例 商务网站的推广策略
  • 优化大师的功能有哪些国外网站如何做seo
  • 南昌公司建设网站费用wordpress中文电商插件
  • 网站上传权限宝坻做网站哪家好
  • 要找人做公司网站应该怎么做软件用户界面设计
  • 新开家政如何做网站开发游戏的软件
  • 阜阳网站建设公司计算机网络技术招聘信息
  • 绥阳网站建设金属材料东莞网站建设
  • 产品外观设计网站抓关键词的方法10条
  • 建设局网站投诉ipc网站备案查询
  • 网站页面确认书seo排名app
  • 旅游网站制作过程台州网站制作台州网站建设
  • 像芥末堆做内容的网站遵义网站推广
  • 网站官网认证加v怎么做网页制作基本教程
  • 广州白云机场网站建设wordpress搜索翻页404
  • wordpress 网站暂停门户网站建设进度
  • 百度推广需要备案的网站吗百度旗下13个app
  • 保山市住房和城乡建设局网站建设银行个人登录网站
  • 华山论剑西凤酒网站建设在线做网站免费黄搞
  • 庙行网站建设wordpress在哪里看访客
  • 广西网站推广邳州网页设计
  • 企业信息化建设如何帮助客户理解网站流量建站 小语种 连接
  • 怎么管理网站添加代码asp建设的网站
  • 做网站大概费用金华网上商城网站建设
  • 做公司网站需要准备什么seo培训课程
  • 免费建网站抚顺国内互动网站建设
  • 做风筝网站wordpress发布
  • 南通网站建设心得商田科技网站
  • 哔哩哔哩做视频网站专业简历制作网站有哪些
  • 企业网站初始期如何优化淘宝网站开发用到哪些技术