首页 > 代码库 > Construct Binary Tree from Preorder and Inorder Traversal
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.
给出树的中序和先序遍历 要求返回树 中序结果{1,2,5,4,3,6} 先序{4,2,1,5,3,6}根据先序可以确定根节点为preorder[0] 从中序中可以以根节点为界分出左右子树节点 进行递归赋值 代码如下:
public class Solution { public TreeNode buildTree(int[] preorder, int[] inorder) { if(preorder.length==0&&inorder.length==0){ return null; } TreeNode root=new TreeNode(preorder[0]); int begindex=0; for(int i=0;i<inorder.length;i++){ if(inorder[i]==preorder[0]){ begindex=i; break; } } int leftlen=begindex; int rightlen=inorder.length-begindex-1; int[] leftpre=new int[leftlen]; int[] leftino=new int[leftlen]; for(int i=0;i<begindex;i++){ leftpre[i]=preorder[i+1]; leftino[i]=inorder[i]; } root.left=buildTree(leftpre, leftino); int[] rightpre=new int[rightlen]; int[] rightino=new int[rightlen]; for(int i=0;i<rightlen;i++){ rightpre[i]=preorder[i+begindex+1]; rightino[i]=inorder[i+begindex+1]; } root.right=buildTree(rightpre, rightino); return root; } }
Construct Binary Tree from Preorder and Inorder Traversal
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。