剑指offer——7.重建二叉树
题目:
题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。
知识点:
- 树的基本知识,value、左右子节点;
注意:
无
代码实现:
- 递归思想(暂时没有彻底理解,背写!!!)
public class Num07wang {public static void main(String[] args) {int preorder[] = {1, 2, 4, 7, 3, 5, 6, 8};int inorder[] = {4, 7, 2, 1, 5, 3, 8, 6};TreeNode treeNode = rebuildBinaryTree(preorder, inorder);System.out.println(treeNode);}/*** 重构二叉树* @param preorder* @param inorder* @return*/private static TreeNode rebuildBinaryTree(int[] preorder, int[] inorder) {if (preorder==null || inorder == null) {return null;}//核心算法TreeNode node = rebuildBinaryTreeCore(preorder, 0, preorder.length-1, inorder, 0,inorder.length-1);return node;}/*** 核心算法* @param preorder* @param i:前序初始index* @param j:前序终止index* @param inorder* @param k:中序初始index* @param l:中序终止index*/private static TreeNode rebuildBinaryTreeCore(int[] preorder, int preStartIndex, int preEndIndex, int[] inorder, int inStartIndex, int inEndIndex) {if(preStartIndex>preEndIndex || inStartIndex>inEndIndex) {return null;}//根据前序确定根节点TreeNode node = new TreeNode(preorder[preStartIndex]);//定位根节点再中序中的位置for(int i=inStartIndex; i<=inEndIndex; i++) {if(preorder[preStartIndex] ==inorder[i]) {//(i- inStartIndex)为中序排列中左子树的个数//左子树node.left = rebuildBinaryTreeCore(preorder, preStartIndex+1, preStartIndex+ (i-inStartIndex), inorder, inStartIndex, i-1);//右子树node.right = rebuildBinaryTreeCore(preorder, preStartIndex+1+(i-inStartIndex), preEndIndex, inorder, i+1, inEndIndex);}}return node;}public static class TreeNode{public int data;public TreeNode left;public TreeNode right;public TreeNode(int data) {this.data = data;}public String toString() {return "TreeNode [data=" + data + ", left=" + left + ", right=" + right+ "]";}}
}
剑指offer——7.重建二叉树相关推荐
- 【LeetCode】剑指 Offer 07. 重建二叉树
[LeetCode]剑指 Offer 07. 重建二叉树 文章目录 [LeetCode]剑指 Offer 07. 重建二叉树 package offer;import java.util.ArrayD ...
- 剑指Offer #04 重建二叉树(递归)
题目来源:牛客网-剑指Offer专题 题目地址:重建二叉树 题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序 ...
- [剑指offer]8.重建二叉树
题目 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2, ...
- 剑指Offer系列 重建二叉树
题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树. 假设输入的前序遍历和中序遍历的结果中都不含重复的数字. 例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7, ...
- 剑指offer之重建二叉树
1 问题 重建二叉树:给定二叉树的先序遍历(根左右)和中序(左中右)遍历结果,建立这棵二叉树.输入保证二叉树无重复结点 以先序{1, 2, 4, 7, 3, 5, 6, 8}和中序{4, 7, 2, ...
- 剑指 Offer 07. 重建二叉树【千字分析,三种方法】
立志用最少的代码做最高效的表达 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字. 例如,给出 前序遍历 preorder = [3,9,2 ...
- 【※ LeetCode 剑指 Offer 07. 重建二叉树(中等)】尚待完善
题目: 输入某二叉树的前序遍历和中序遍历的结果,请构建该二叉树并返回其根节点. 假设输入的前序遍历和中序遍历的结果中都不含重复的数字. 来源:力扣(LeetCode) 链接:https://leetc ...
- 剑指offer 07重建二叉树(根据前序、中序遍历)草真tm难
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode ...
- 剑指 Offer 07. 重建二叉树
⭐简单说两句⭐ CSDN个人主页:后端小知识
最新文章
- 一句话木马使用方法总结
- Altium Designer 隐藏铺铜
- iOS本地化项目上传到gitHub
- httprunner框架学习总结
- favicon.ico--网站标题小图片二三事
- centos更换网卡后怎么更新配置_CentOS安装
- 解析docker中的环境变量使用和常见问题解决
- matlab2014a VS2010混合编程
- python多叉树_python中高效的四叉树实现
- JS实现星星评分系统
- 情人节适合送礼的数码好物有哪些?心意满满的数码好物清单
- 房贷要不要提前还款两种还款方式比较
- ansys经典界面分析工字钢_工字钢_ANSYS实例分析72道(含结果)
- seq2seq模型_推断速度达seq2seq模型的100倍,谷歌开源文本生成新方法LaserTagger
- 机器学习:03 Kaggle比赛 患者是否患糖尿病
- 当我真正开始爱自己——来自UOU的馈赠
- 79页智慧应急指挥平台1 6 N体系建设方案
- 电力行业服务器加固系统,系统加固
- 应届生嵌入式面试题总结——嵌入式基础
- 解决Incorrect string value: '\\xD6\\xD0\\xB9\\xFA\\xB1\\xEA...' for column 'VARIABLE_V