zoukankan      html  css  js  c++  java
  • 43: Construct Binary Tree from Preorder and Inorder Traversal

    /************************************************************************/
                /*       43:  Construct Binary Tree from Preorder and Inorder Traversal                            */
                /************************************************************************/
                /*
                 * Given preorder and inorder traversal of a tree, construct the binary tree.
                 *
                 * Note:
    You may assume that duplicates do not exist in the tree.

                 * */
                
                /*** 递归做法*********************/
                /*
                 * 关键的地方在于:
                 *
                 * 在前序遍历的序列里,同时对左子树和右子树进行递归得到一个节点的左右节点
                 * */

    public TreeNode buildTreeByPre_In(int[] preorder, int[] inorder)
                {
                     return helper(0, 0, inorder.length - 1, preorder, inorder);
                }
                
                private  TreeNode helper(int preStart, int inStart, int inEnd, int[] preorder, int[] inorder) {
                    if (preStart > preorder.length - 1 || inStart > inEnd) {
                        return null;
                    }
                    TreeNode root = new TreeNode(preorder[preStart]);
                    int inIndex = 0; // Index of current root in inorder
                    for (int i = inStart; i <= inEnd; i++) {
                        if (inorder[i] == root.val) {
                            inIndex = i;
                            break;
                        }
                    }
                    root.left = helper(preStart + 1, inStart, inIndex - 1, preorder, inorder);
                    root.right = helper(preStart + inIndex - inStart + 1, inIndex + 1, inEnd, preorder, inorder);
                    return root;
                }



  • 相关阅读:
    error PRJ0019的一个解决心得
    3月3日工作日志88250
    IBM、BEA和JBoss应用服务器采用OSGi
    四级再次挂了
    迁移应用进入基于Annotation MVC的spring 2.5
    如何在VC6.0中设置条件断点
    3月4日工作日志88250
    KMP字符串模式匹配详解
    KMP字符串模式匹配详解
    C/C++之SQLite常用函数
  • 原文地址:https://www.cnblogs.com/theonemars/p/4254336.html
Copyright © 2011-2022 走看看