leetcode Construct Binary Tree from Inorder and Postorder Traversal

原创 2016年06月01日 16:57:27

题目链接

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
public class Solution {
    public TreeNode buildTree(int[] inorder, int[] postorder) {
        if(inorder==null||inorder.length==0)
        {
            return null;
        }


        TreeNode root=new TreeNode(postorder[postorder.length-1]);
        build(root, inorder, 0, inorder.length-1, postorder, 0, postorder.length-1);
        return root;
    }

    public void build(TreeNode root,int[] inorder, int ins,int ine,int[] postorder,int pos,int poe)
    {
        int parentIndexInMiddle=ins;

        while(inorder[parentIndexInMiddle]!=root.val)
        {
            parentIndexInMiddle++;
        }

        int leftCount=parentIndexInMiddle-ins;



        if(leftCount>0)
        {
            int leftRootIndexInPost=pos+leftCount-1;
            root.left=new TreeNode(postorder[leftRootIndexInPost]);
            build(root.left, inorder, ins, parentIndexInMiddle-1, postorder, pos, leftRootIndexInPost);
        }

        int rightCount=ine-parentIndexInMiddle;
        if(rightCount>0)
        {
            int rightRootIndexInpost=poe-1;
            root.right=new TreeNode(postorder[rightRootIndexInpost]);
            build(root.right, inorder, parentIndexInMiddle+1, ine, postorder, poe-rightCount, poe-1);
        }
    }
}

Binary Tree Traversal二叉树遍历方法总结

Binary Tree Traversal二叉树遍历方法总结这里总结的二叉树遍历分为两大类: 深度优先(depth-first traversal) 广度优先(breadth-first traver...
  • jackey_jk
  • jackey_jk
  • 2016年04月01日 02:58
  • 763

二叉树遍历之morris traversal

刚开始接触到这个是因为算法导论习题10.4-5,其中有一句话说不能改变二叉树结构,即使临时改变也不行,个人就感觉改变二叉树结构也可以进行遍历。 搜索的过程中发现了morris 遍历,刚开始根...
  • wdq347
  • wdq347
  • 2013年04月26日 11:40
  • 5502

leetcode94 inorderTraversal中序遍历的三种实现

题目很简单二叉树的中序遍历,数据结构的教材上都会有这样的示例代码。其实中序遍历有三种解法: 递归解法(recursive solution) 栈迭代解法(iterative way(stack)) ...
  • hengyishu
  • hengyishu
  • 2015年08月02日 10:12
  • 594

LeetCode 144 Binary Tree Preorder Traversal(二叉树的前序遍历)+(二叉树、迭代)

翻译给定一个二叉树,返回其前序遍历的节点的值。例如: 给定二叉树为 {1,#, 2, 3} 1 \ 2 / 3 返回 [1, 2, 3]备注:用递归是微不足道的,...
  • NoMasp
  • NoMasp
  • 2016年03月19日 16:15
  • 3080

Binary Tree Inorder Traversal——二叉树的中序遍历

原题: Given a binary tree, return the inorder traversal of its nodes' values. =>给定一个二叉树,返回所有节点的中序遍历 ...
  • u011960402
  • u011960402
  • 2014年02月07日 09:21
  • 2227

Leetcode-Symmetric Tree——判断二叉树是否对称

题目 Symmetric Tree  Total Accepted: 12814 Total Submissions: 40358My Submissions Given a bina...
  • disappearedgod
  • disappearedgod
  • 2014年04月20日 01:00
  • 2052

94 Binary Tree Inorder Traversal 【递归和迭代的对比较分析】

一道很常规的二叉树遍历题,相信大家都在课上学习过。 但是题目要求是不能用递归调用的方法,也就是课上讲过的方法。要用iterative迭代的方法,也就是一个一个找,通过while循环来输出。 先把递...
  • laserljy123
  • laserljy123
  • 2017年03月20日 13:31
  • 70

LeetCode_将LeetCode中的字符串用例转换成二叉树

最近刷LeetCode题目时总会出现错误时,手动生成用例的情况,于是自己写了一个将...
  • loveRooney
  • loveRooney
  • 2014年06月22日 15:02
  • 1597

LeetCode Binary Tree Postorder Traversal 二叉树后序遍历 递归和非递归解法

2014-1-10更新: 上面的非递归算法,需要对后序遍历的顺序非常熟悉,然后才能逆序访问,最后反转输出结果,虽然很适合这道题,因为题目要求保存结果,但是我们也可以正常顺序非递归访问。 程序如下: 这...
  • kenden23
  • kenden23
  • 2013年11月08日 19:21
  • 5836

LeetCode 94 Binary Tree Inorder Traversal(二叉树的中序遍历)+(二叉树、迭代)

翻译给定一个二叉树,返回其中序遍历的节点的值。例如: 给定二叉树为 {1, #, 2, 3} 1 \ 2 / 3 返回 [1, 3, 2]备注:用递归是微不足道的...
  • NoMasp
  • NoMasp
  • 2016年03月19日 15:32
  • 2935
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:leetcode Construct Binary Tree from Inorder and Postorder Traversal
举报原因:
原因补充:

(最多只允许输入30个字)