树——由中序和前序,中序和后序序列重建二叉树

来源:互联网 发布:java手机游戏培训 编辑:程序博客网 时间:2024/05/22 12:27

题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。

假设输入中都不含重复的数字。


例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。


一、由前序和中序重构

代码如下:

/** * Definition for binary tree * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */public class Solution {    public TreeNode reConstructBinaryTree(int [] pre,int [] in) {        if(pre==null||in==null||pre.length!=in.length)            return null;        return  helper(pre,0,pre.length-1,in,0,in.length-1);            }    public TreeNode helper(int []pre,int prelow,int prehigh,int[] in,int inlow,int inhigh)        {        if(prelow>prehigh||inlow>inhigh)            return null;        TreeNode root=new TreeNode(pre[prelow]);        int i=inlow;        for(;i<inhigh&&in[i]!=root.val;i++);                    root.left=helper(pre,prelow+1,prelow+i-inlow,in,inlow,i-1);//一般做错就是下标搞错了;                    root.right=helper(pre,prelow+i-inlow+1,prehigh,in,i+1,inhigh);                return root;    }}


二、由后序和中序重构

代码如下:

public class Solution {    public TreeNode buildTree(int[] inorder, int[] postorder) {       if(inorder == null||postorder == null||inorder.length == 0||inorder.length!=postorder.length)           return null;        return build_Tree(inorder,0,inorder.length-1,postorder,0,postorder.length-1);             }        public TreeNode build_Tree(int[] inorder,int inbegin,int inend,int[] postorder,int postbegin,int postend)        {        if(inbegin>inend||postbegin>postend)            return null;                int root_val=postorder[postend];                TreeNode root=new TreeNode(root_val);                int index=inbegin;        for(;inorder[index]!=root_val;index++)            {           }        //计算index时要仔细;        root.left=build_Tree(inorder,inbegin,index-1,postorder,postbegin,postbegin+index-inbegin-1);                root.right=build_Tree(inorder,index+1,inend,postorder,postbegin+index-inbegin,postend-1);                return root;            }}




0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 手机邮箱文件打不开怎么办 户口注销后房产怎么办 公司注销后车辆怎么办 注销后的手机号怎么办 网易邮箱修复失败怎么办 网易邮箱忘记密码怎么办 苹果忘记安全问题答案怎么办 手机被黑客盯上怎么办 qq邮箱被占用怎么办 淘宝邮箱被占用怎么办 LOL出现上载错误怎么办 本科论文格式有些错误怎么办 下载的压缩包打不开怎么办 下载好qq该怎么办 163邮箱云附件怎么办 iphone无法打开网页怎么办 qq不能下载文件怎么办 邮箱登录验证码怎么办 手机截图不了了怎么办 安装包己损坏怎么办 ktv没有的歌怎么办 oppo安装包损坏怎么办 微信软件包受损怎么办 魅族软件包损坏怎么办 安装包自动删除怎么办 apk文件损坏了怎么办 安装包发生错误怎么办 转发视频穿帮了怎么办 自拍神器死机了怎么办 电脑看视频死机怎么办 ios验证应用没用怎么办 宝宝不睡睡袋怎么办 酷我音乐收费怎么办 电脑版酷狗字体模糊怎么办 酷我切歌怎么办 快手暂不支持音乐格式怎么办 上传视频不清晰怎么办 MP4格式嫌大怎么办 课堂派怎么办改成考试 手机信息幕变黑怎么办 手机百度太耗电怎么办