• Construct Binary Tree from Inorder and Postorder Traversal


     1 public class Solution {
     2     public TreeNode buildTree(int[] inorder, int[] postorder) {
     3         // IMPORTANT: Please reset any member data you declared, as
     4         // the same Solution instance will be reused for each test case.
     5         if(inorder == null||postorder == null||inorder.length == 0||postorder.length==0)
     6             return null;
     7         return buildTree(inorder, postorder, 0, inorder.length-1, 0 ,inorder.length-1);
     8     }
     9     
    10     private TreeNode buildTree(int[] inorder, int[] postorder, int instart, int inend, int postart, int poend)
    11     {
    12         if(instart > inend)
    13             return null;
    14         TreeNode node = new TreeNode(postorder[poend]);
    15         if(instart == inend)
    16             return node;
    17         int mid = 0;
    18         for(int i = instart; i <= inend; i++)
    19         {
    20             if(inorder[i] == postorder[poend])
    21             {
    22                 mid = i;
    23                 break;
    24             }
    25         }
    26         node.left = buildTree(inorder, postorder, instart, mid - 1, postart, postart + (mid - 1 - instart));
    27         node.right = buildTree(inorder, postorder, mid + 1, inend, poend + mid - inend, poend - 1);
    28         return node;
    29     }
    30 }
  • 相关阅读:
    rt_list_entry() 函数
    替换空格
    跳台阶
    斐波那契数列
    基于5221码的同步十进制加法计数器
    强连通分量+Tarjia+缩点
    次小生成树
    差分约束
    P1547 Out of Hay
    P1197 [JSOI2008]星球大战
  • 原文地址:https://www.cnblogs.com/jasonC/p/3418213.html
Copyright © 2020-2023  润新知