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代码:
- private TreeNode buildTree(int[] preorder,int pstart,int[] inorder,int istart,int length) {
- if(preorder==null || length==0) return null; // 判定条件
- if(length==1) {
- return new TreeNode(preorder[pstart]);
- }
- int tmp = preorder[pstart];
- TreeNode root = new TreeNode(tmp);
- int i = 0;
- for(i=0;i<length;i++) {
- if(inorder[istart+i] == tmp) {
- break;
- }
- }
- root.left = buildTree(preorder,pstart+1,inorder,istart,i); // 注意左侧的长度 i
- root.right = buildTree(preorder,pstart+i+1,inorder,istart+i+1,length-(i+1)); // 注意右侧的长度,为length-(i+1)
- return root;
- }
- public TreeNode buildTree(int[] preorder, int[] inorder) {
- if(preorder==null || inorder==null) return null;
- int plen = preorder.length;
- int ilen = inorder.length;
- if(plen != ilen) return null;
- return buildTree(preorder,0,inorder,0,plen);
- }

浙公网安备 33010602011771号