leetcode_105_從前序與中序遍歷序列構造二叉樹

leetcode 105 從前序與中序遍歷序列構造二叉樹

  • 題目
    根據一棵樹的前序遍歷與中序遍歷構造二叉樹。
    
    注意:
    你可以假設樹中沒有重複的元素。
    
    例如,給出
    
    前序遍歷 preorder = [3,9,20,15,7]
    中序遍歷 inorder = [9,3,15,20,7]
    返回如下的二叉樹:
    
        3
       / \
      9  20
        /  \
       15   7
    
    1. 遞歸法
      import java.util.Arrays;
      /**
       * Definition for a binary tree node.
       * public class TreeNode {
       *     int val;
       *     TreeNode left;
       *     TreeNode right;
       *     TreeNode(int x) { val = x; }
       * }
       */
      class Solution {
          public TreeNode buildTree(int[] preorder, int[] inorder) {
              if(preorder.length==0)
                  return null;
              TreeNode head = new TreeNode(preorder[0]);
              int index;
              for(index=0;index<preorder.length;index++){
                  if(inorder[index]==preorder[0]) break;
              }
              head.left = buildTree(
                  Arrays.copyOfRange(preorder,1,1+index),
                  Arrays.copyOfRange(inorder,0,index)
                  );
              head.right = buildTree(
                  Arrays.copyOfRange(preorder,index+1,preorder.length),
                  Arrays.copyOfRange(inorder,index+1,inorder.length)
                  );
              return head;
          }
      }
      
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章