重建二叉树,输入某二叉树的前序遍历和中序遍历的结果,重建出二叉树,假设输入的前序和中序遍历结果中不含重复的数字
来源:互联网 发布:淘宝直播主播培训 编辑:程序博客网 时间:2024/05/21 10:39
/** * * 树的结构 * */class BinaryTree{int data;BinaryTree left;BinaryTree right;}/** * * 重建二叉树,输入某二叉树的前序遍历和中序遍历的结果,重建出二叉树,假设输入的前序和中序遍历结果中不含重复的数字 * */public class RebuildBiTree {/** * * @param preorder 前序遍历结果 * @param inorder中序遍历结果 * @param rootIndex 根节点在前序遍历结果中的位置 * @param start子数序列在中序遍历结果中的起始位置 * @param end子数序列在中序遍历结果中的终止位置 * @param root 根节点 * @return返回数的根节点 */public BinaryTree rebuildTree(int[] preorder,int[] inorder,int rootIndex,int start,int end,BinaryTree root){if(preorder == null || inorder == null || preorder.length!=inorder.length || preorder.length == 0 || inorder.length == 0){return root;}root = new BinaryTree();root.data = preorder[rootIndex];//根节点在中序遍历结果中的位置int rootIndexInInorder = -1;for(int i = start;i <= end;i++){if(root.data == inorder[i]){rootIndexInInorder = i;break;}}//如果有左子树if(rootIndexInInorder - start >= 1 ){//rootIndex为在前序遍历结果中的位置root.left = rebuildTree(preorder,inorder,rootIndex+1,start,rootIndexInInorder-1,root.left);}//如果有右子树if(end - rootIndexInInorder >= 1 ){root.right = rebuildTree(preorder,inorder,rootIndex + rootIndexInInorder-start + 1,rootIndexInInorder+1,end,root.right);} return root;}//中序遍历public void inorder(BinaryTree root){if(root != null){inorder(root.left);System.out.println(root.data);inorder(root.right);}}public static void main(String[] args) {RebuildBiTree rbt = new RebuildBiTree();BinaryTree root = null;int[] preorder = {1,2,4,7,3,5,6,8};int[] inorder = {4,7,2,1,5,3,8,6};root = rbt.rebuildTree(preorder, inorder, 0, 0, preorder.length - 1, root);rbt.inorder(root);}}
- 重建二叉树,输入某二叉树的前序遍历和中序遍历的结果,重建出二叉树,假设输入的前序和中序遍历结果中不含重复的数字
- 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。
- 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。
- 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。
- 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5
- 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5
- 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5
- 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5
- 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。
- 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。
- 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。
- 输入某二叉树的前序遍历和中序遍历的结果请重建出该二叉树。
- 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。
- 重建二叉树:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。
- java 剑指offor 第四题:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}
- 输入某二叉树的前序和中序遍历结果,重建该二叉树
- 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。
- 输入某二叉树的前序遍历和中序遍历的结果,重建该二叉树
- 从头到尾彻底解析hash表算法
- 【Chapter 1】入门
- 安装Ubuntu后设置root密码
- 统计分析学习笔记——图像处理中的统计应用案例
- Using libavformat and libavcodec
- 重建二叉树,输入某二叉树的前序遍历和中序遍历的结果,重建出二叉树,假设输入的前序和中序遍历结果中不含重复的数字
- ffmpeg库音频解码示例
- java包的作用
- 非sys用户下存储过程对v$视图的使用
- HDU 2048 神、上帝以及老天爷 (递推&错排概率)
- jquery使用备忘录
- 概要文件的使用
- ORACLE 分页SQL
- Android中Shape的了解