105. Construct Binary Tree from Inorder and preorder Traversal
2024-08-31 06:13:33
/*
* 105. Construct Binary Tree from Inorder and preorder Traversal
* 11.20 By Mingyang
* 千万不要以为root一定在中间那个点,还是要找一下中间点的位置
* p.left = construct(preorder, preStart + 1, preStart + (k - inStart),inorder, inStart, k - 1);
* p.right = construct(preorder, preStart + (k - inStart) + 1, preEnd,inorder, k + 1, inEnd);
* 难点就在于如何找到这两个起点和终点的index
*/
public TreeNode buildTree(int[] preorder, int[] inorder) {
int preEnd = preorder.length - 1;
int inEnd = inorder.length - 1;
return construct(preorder, 0, preEnd, inorder, 0, inEnd);
}
public TreeNode construct(int[] preorder, int preStart, int preEnd,int[] inorder, int inStart, int inEnd) {
if (preStart > preEnd || inStart > inEnd) {
return null;
}
int val = preorder[preStart];
TreeNode p = new TreeNode(val);
// find parent element index from inorder
int k = 0;
for (int i = 0; i < inorder.length; i++) {
if (val == inorder[i]) {
k = i;
break;
}
}
p.left = construct(preorder, preStart + 1, preStart + (k - inStart),inorder, inStart, k - 1);
p.right = construct(preorder, preStart + (k - inStart) + 1, preEnd,inorder, k + 1, inEnd);
return p;
}
最新文章
- UltralEdit 替换tips
- Socket支持多用户并发访问的解决办法
- 编译原理LL1文法Follow集算法实现
- css常用中文字体的英文名称写法
- xcode 出现the file couldn&#39;t be opened 怎么解决
- MySQL学习笔记——存储引擎的索引特性
- log.sh
- 左右推拽显示对比图 - jQyery封装 - 附源文件
- 域名解析 URL转发
- java war 打包、解压命令(转载)
- leetcode — best-time-to-buy-and-sell-stock
- 复制命令(ROBOCOPY)
- 模板 RMQ问题ST表实现/单调队列
- OO第二单元单元总结
- 渗透测试的理论部分4——开放式Web应用程序安全项目
- vue.js 树菜单 递归组件树来实现
- sqlserver的like &#39;%xxx%&#39;优化,全文索引
- RabbitMQ 可靠投递
- netty 的 JBoss Marshalling 编码解码
- js批量上传文件