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

建凡网站厦门市建设局网站 限价房

建凡网站,厦门市建设局网站 限价房,wordpress注册页面自动生成,金属材料网站建设欢迎浏览高耳机的博客 希望我们彼此都有更好的收获 感谢三连支持! 首先,根据先序遍历可以确定根节点E,再在中序遍历中通过E确定左树和右数 ; 设立inBegin和inEnd,通过这两个参数的游走,来进行子树的创建&a…

欢迎浏览高耳机的博客

希望我们彼此都有更好的收获

感谢三连支持!

 

首先,根据先序遍历可以确定根节点E,再在中序遍历中通过E确定左树和右数 ;

设立inBegin和inEnd,通过这两个参数的游走,来进行子树的创建;

已知根节点,则左子树的范围表示为(inBegin,rootIndex - 1);

而右子树为(rootIndex + 1,inEnd);

通过递归调用,即可不断创建子树,直到叶子节点;

如果inBegin > inEnd,则说明此时为叶子节点,应该返回上一层递归;

public TreeNode buildTree(int[] preorder, int[] inorder) {return buildTreeChilde(preorder, inorder, 0, inorder.length-1);
}private TreeNode buildTreeChilde(int[] preorder, int[] inorder, int inBegin, int inEnd) {if(inBegin > inEnd){return null;}TreeNode root = new TreeNode(preorder[preIndex]); // 创建根节点int rootIndex = findRootIndex(inorder, inBegin, inEnd, preorder[preIndex]); // 找到根节点在中序遍历中的位置preIndex++;root.left = buildTreeChilde(preorder, inorder, inBegin, rootIndex-1); // 递归构建左子树root.right = buildTreeChilde(preorder, inorder, rootIndex+1, inEnd); // 递归构建右子树return root;
}private int findRootIndex(int[] inorder, int inBegin, int inEnd, int key){for (int i = inBegin; i <= inEnd; i++) {if (key == inorder[i]) {return i;}}return -1;}

OJ链接:

https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-inorder-traversal/description/

 

同样的,根据后序遍历可以确定根节点,再在中序遍历中通过根节点确定左树和右数 ;

需要注意的是,由于postIndex根据后序遍历(左,右,根)创建,与前序遍历相反,所以每次递归时postIndex--,从根节点前的右子树开始递归;

同样的,已知根节点,则右子树表示范围为(rootIndex + 1,inEnd);

而左子树表示为(inBegin,rootIndex - 1);

通过递归调用,即可不断创建子树,直到叶子节点;

如果inBegin > inEnd,则说明此时为叶子节点,应该返回上一层递归;

 

public TreeNode buildTree(int[] inorder, int[] postorder) {postIndex = postorder.length-1;return buildTreeChilde(inorder, postorder, 0, inorder.length-1);
}private TreeNode buildTreeChilde(int[] inorder, int[] postorder, int inBegin, int inEnd) {if(inBegin > inEnd){return null;}TreeNode root = new TreeNode(postorder[postIndex]); // 创建根节点int rootIndex = findRootIndex(inorder, inBegin, inEnd, postorder[postIndex]); // 找到根节点在中序遍历中的位置postIndex--;root.right = buildTreeChilde(inorder, postorder, rootIndex+1, inEnd); // 递归构建右子树root.left = buildTreeChilde(inorder, postorder, inBegin, rootIndex-1); // 递归构建左子树return root;
}private int findRootIndex(int[] inorder, int inBegin, int inEnd, int key){for (int i = inBegin; i <= inEnd; i++) {if (key == inorder[i]) {return i;}}return -1;}

OJ链接:https://leetcode.cn/problems/construct-binary-tree-from-inorder-and-postorder-traversal/description/ 


希望这篇博客能为你理解java编程思想提供一些帮助。

如有不足之处请多多指出。

我是高耳机。 

http://www.yayakq.cn/news/679201/

相关文章:

  • 网站制作的基本中国做二手房最大的网站
  • angular 做的网站广告设计与制作短期培训班
  • 外贸汽车网站建立网站服务器怎么弄
  • 佛山营销网站建设服务公司山东省建设备案在哪个网站
  • 注册网站做网销苏州找工作网站有哪些
  • 海口网站排名提升做字体特效的网站
  • 集团网站建设特点互联网课堂wordpress安卓下载
  • 全国工程建设系统网站wordpress qq挂件
  • 垂直网站怎么做seo技术培训泰州
  • 中淼建设工程有限公司网站张家港高端网站建设公司
  • 无锡网站建设公司地址gzip网站优化
  • h5手机网站开发国外音乐网站设计
  • 网站怎么做才能将名声打响免费的电脑优化软件
  • 注册公司如何做网站网站建设商务代表故事
  • 怎么在百度建设网站wordpress常见的15个问题
  • 域名注册网站制作营销策划公司名字
  • 找外包做网站要多久自己制作手机app软件
  • 网站 谁建设 谁负责郑州网站建设修改
  • 代做硬件毕业设计网站山东济南市网站建设
  • 北京城乡建设学校网站wordpress自适应框架
  • 在哪些网站能接到活做做的最好的手机网站
  • 关于网站建设的折页广告注册门户网站
  • 平台式网站模板下载地址新校区建设网站管理规定
  • 怎么做网站流量赚钱吗温州网站建设价格
  • 东营网站设计制作zac博客seo
  • asp与sql网站建设wordpress搭建个人博客linux
  • 江门网站优化快速排名互联网传媒 网站
  • 易县网站建设电子商务网站开发实训总结
  • 做网站和做网页有什么区别网站开发seo要求
  • 商城开发网站wordpress 4.9.6