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 }
  • 相关阅读:
    tcpdump命令
    浅谈  curl命令
    MongoDB下rs.status()命令
    Device mapper存储方式
    top命令
    cat命令汇总整理
    centos7搭建nginx日志
    CentOS7 防火墙(firewall)的操作命令(转)
    服务器的硬件组成
    shell随机生成10个文件
  • 原文地址:https://www.cnblogs.com/jasonC/p/3414265.html
Copyright © 2011-2022 走看看