码迷,mamicode.com
首页 > 其他好文 > 详细

【Leetcode】Construct Binary Tree from Preorder and Inorder Traversal

时间:2016-05-22 12:25:16      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:

题目链接:https://leetcode.com/problems/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.

思路:

递归。

算法

[java] view plain copy
 技术分享技术分享
  1. public int search(int nums[], int target) {  
  2.     for (int i = 0; i < nums.length; i++) {  
  3.         if (nums[i] == target)  
  4.             return i;  
  5.     }  
  6.     return -1;  
  7. }  
  8.   
  9. public TreeNode buildTree(int[] preorder, int[] inorder) {  
  10.     if (preorder == null || preorder.length == 0 || inorder == null || inorder.length == 0) {  
  11.         return null;  
  12.     }  
  13.   
  14.     int start = -1, index = -1;  
  15.     for (int i = 0; i < preorder.length; i++) {  
  16.         int tmp = search(inorder, preorder[i]);  
  17.         if (tmp >= 0) {  
  18.             index = tmp;  
  19.             start = i;  
  20.             break;  
  21.         }  
  22.     }  
  23.     TreeNode root = new TreeNode(preorder[start]);  
  24.     if (inorder.length == 1) {  
  25.         return root;  
  26.     }  
  27.     int leftInorder[] = Arrays.copyOfRange(inorder, 0, index);  
  28.     int rightInorder[] = Arrays.copyOfRange(inorder, index + 1, inorder.length);  
  29.     int newpreorder[] = Arrays.copyOfRange(preorder, start + 1, preorder.length);  
  30.     root.left = buildTree(newpreorder, leftInorder);  
  31.     root.right = buildTree(newpreorder, rightInorder);  
  32.     return root;  
  33. }  

【Leetcode】Construct Binary Tree from Preorder and Inorder Traversal

标签:

原文地址:http://blog.csdn.net/yeqiuzs/article/details/51472685

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!