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;
                }



  • 相关阅读:
    C#(二)变量
    WinForm(一)基础
    面向对象(二) 继承和多态
    面向对象 (三)抽象类和接口
    面向对象 基础
    面向对象(一)封装 命名空间 访问修饰符等
    C#跳转语句 迭代法 穷举法
    C# 异常处理语句
    C# while循环
    Request和Response
  • 原文地址:https://www.cnblogs.com/theonemars/p/4254336.html
Copyright © 2011-2022 走看看