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

    recursion programming

     1 public class Solution {
     2     public TreeNode buildTree(int[] preorder, int[] inorder) {
     3         // IMPORTANT: Please reset any member data you declared, as
     4         // the same Solution instance will be reused for each test case.
     5         if(preorder == null)
     6             return null;
     7         return buildTree(preorder, inorder, 0, preorder.length, 0, inorder.length);
     8     }
     9     
    10     private TreeNode buildTree(int[] preorder, int[] inorder, int preorderStart, int preorderEnd, int inorderStart, int inorderEnd)
    11     {
    12         if(preorderStart >= preorderEnd)
    13             return null;
    14         TreeNode tmp = new TreeNode(preorder[preorderStart]);
    15         if(preorderEnd - preorderStart == 1)
    16             return tmp;
    17         int newinorderStart = inorderStart;
    18         
    19         while(inorder[newinorderStart] != preorder[preorderStart])
    20         {
    21             newinorderStart++;
    22         }
    23         
    24         int newpreorderStart = preorderStart + 1;
    25         int newpreorderEnd = newpreorderStart + (newinorderStart - inorderStart);
    26         tmp.left = buildTree(preorder, inorder, newpreorderStart, newpreorderEnd, inorderStart, newinorderStart);
    27         tmp.right = buildTree(preorder, inorder, newpreorderEnd, preorderEnd, newinorderStart+1, inorderEnd);
    28         return tmp;
    29     }
    30 }
  • 相关阅读:
    B站使用总结
    安装国外浏览器的好处
    查看网页源代码
    如何下载bilibili上面的视频
    11.27
    11.26
    11.25
    11.24获取时间
    11.23
    11.21
  • 原文地址:https://www.cnblogs.com/jasonC/p/3414265.html
Copyright © 2011-2022 走看看