您的位置:首页 > Web前端

006重建二叉树

2018-01-27 17:35 134 查看
  第六题要求根据所给的前序和中序遍历结果重新构建二叉树,答案里给的虽然也是递归方式,但是我没有看懂,于是自己写了一个,试了几个案例通过了,目前没发现问题。但是这里需要有一个全局变量index,用来确定当前处理的是前序数组中的哪个数,由于java不能使用指针,因此只能通过下标来确定起始位置。代码中的n1是前序数组,n2是中序数组,left是需要搜索的中序数组的起始位置,right是需要搜索的中序数组的结束位置。

public BinaryNode createBinaryNode(int[] n1, int[] n2, int left, int right) {
if (index < 0 || index >= n1.length || left > right) {
return null;
}
BinaryNode root = new BinaryNode();
int currentVal = n1[index];
index++;
root.value = currentVal;
root.left = null;
root.right = null;
for (int i = left; i <= right; i++) {
if (currentVal == n2[i]) {
root.left = createBinaryNode(n1, n2, left, i - 1);
root.right = createBinaryNode(n1, n2, i + 1, right);
}
}
return root;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  剑指offer