600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > Leetcode--105. 从前序与中序遍历序列构造二叉树(Java)

Leetcode--105. 从前序与中序遍历序列构造二叉树(Java)

时间:2019-10-20 03:18:33

相关推荐

Leetcode--105. 从前序与中序遍历序列构造二叉树(Java)

根据一棵树的前序遍历与中序遍历构造二叉树。

注意:

你可以假设树中没有重复的元素。

例如,给出

前序遍历 preorder =[3,9,20,15,7]

中序遍历 inorder = [9,3,15,20,7]

返回如下的二叉树:

3

/ \

9 20

/ \

15 7

代码:

/**

*Definitionforabinarytreenode.

*publicclassTreeNode{

*intval;

*TreeNodeleft;

*TreeNoderight;

*TreeNode(intx){val=x;}

*}

*/

classSolution{

intpreorder[];

intinorder[];

intcount=0;

HashMap<Integer,Integer>map=newHashMap<Integer,Integer>();

publicTreeNodebuildTree(int[]preorder,int[]inorder){

this.preorder=preorder;

this.inorder=inorder;

inti=0;

for(intx:inorder){

map.put(x,i++);

}

TreeNodehead=helper(0,inorder.length);

returnhead;

}

publicTreeNodehelper(intleft,intright){

if(left==right){

returnnull;

}

introot_val=preorder[count];

TreeNoderoot=newTreeNode(root_val);

count++;

intindex=map.get(root_val);//分离左右子树的界限

root.left=helper(left,index);

root.right=helper(index+1,right);

returnroot;

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。