您的位置:首页 > 其它

[leetcode]重建二叉树(先序和终须) 中序遍和后续

2014-07-23 20:32 429 查看
分割后长度相等,就是参数麻烦,p,先序的起始点,ib,ie终须的结束和开始。


/**
*Definitionforbinarytree
*publicclassTreeNode{
*intval;
*TreeNodeleft;
*TreeNoderight;
*TreeNode(intx){val=x;}
*}
*/
publicclassSolution{
publicTreeNodebuildTree(int[]preorder,int[]inorder){
returnbulid(preorder,inorder,0,0,inorder.length-1);//pstartofprorder,ibstartofinorder,ieendofinorder;

}

/**
*Definitionforbinarytree
*publicclassTreeNode{
*intval;
*TreeNodeleft;
*TreeNoderight;
*TreeNode(intx){val=x;}
*}
*/

publicTreeNodebulid(int[]preorder,int[]inorder,intp,intib,intie)
{
if(ib>ie)returnnull;
inti;//splitpoint
for(i=ib;i<=ie;i++)
{
if(inorder[i]==preorder[p])break;
}
TreeNoderoot=newTreeNode(preorder[p]);
root.left=bulid(preorder,inorder,p+1,ib,i-1);
root.right=bulid(preorder,inorder,p+i-ib+1,i+1,ie);//

returnroot;

}
}



/**
*Definitionforbinarytree
*publicclassTreeNode{
*intval;
*TreeNodeleft;
*TreeNoderight;
*TreeNode(intx){val=x;}
*}
*/
publicclassSolution{
publicTreeNodebuildTree(int[]inorder,int[]postorder){
returnbulid(inorder,postorder,postorder.length-1,0,inorder.length-1);

}
publicTreeNodebulid(int[]in,int[]pos,intp,intib,intie)
{
if(ib>ie)returnnull;

inti;
for(i=ib;i<=ie;i++)
{
if(pos[p]==in[i])break;

}
TreeNoderoot=newTreeNode(pos[p]);
root.right=bulid(in,pos,p-1,i+1,ie);
root.left=bulid(in,pos,p-ie+i-1,ib,i-1);

returnroot;

}


}


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: