Tag: 二元树

从inorder和preorder遍历重构二叉树

我编写了以下代码,用于从inorder和preorder遍历构造树。 它看起来对我来说是正确的,但它产生的最终树没有与它构建的输出相同的顺序输出。 任何人都可以帮我找到这个function的缺陷吗? public btree makeTree(int[] preorder, int[] inorder, int left,int right) { if(left > right) return null; if(preIndex >= preorder.length) return null; btree tree = new btree(preorder[preIndex]); preIndex++; int i=0; for(i=left; i<= right;i++) { if(inorder[i]==tree.value) break; } tree.left = makeTree(preorder, inorder,left, i-1); tree.right = makeTree(preorder, inorder,i+1, right ); return tree; } 注意:preIndex是在函数外声明的静态。