public TreeNode reconstructBinaryTree(int [] pre, int [] in)
{
TreeNode root = reconstructBinaryTree(pre, 0, pre.length - 1, in, 0, in.length - 1);
return root;
}
private TreeNode reconstructBinaryTree(int [] pre, int startPre, int endPre, int [] in, int startIn, int endIn)
{
if(startPre > endPre || startIn > endIn)
return null;
TreeNode root = new TreeNode(pre[startPre]);
for(int i = startIn; i <= endIn; i++)
{
if(in[i] == pre[startPre])
{
root.left = reconstructBinaryTree(pre, startPre + 1, startPre + i - startIn, in, startIn, i - 1);
root.right = reconstructBinaryTree(pre, startPre + i - startIn + 1, endPre, in, i + 1, endIn);
break;
}
}
return root;
}
数据结构--通过前序和中序还原二叉树
最新推荐文章于 2023-12-31 23:24:59 发布