java中的多功能
发件人: 有两个函数:一个是public,调用第二个函数,第二个函数有更多参数,定义为privatejava中的多功能,java,oop,Java,Oop,发件人: 有两个函数:一个是public,调用第二个函数,第二个函数有更多参数,定义为private class Node{ int data; ArrayList<Node> children = new ArrayList<Node>(); } public static Node buildTree(int[] preOrder, int[] postOrder){ if(preOrder == null || postOrder == n
class Node{
int data;
ArrayList<Node> children = new ArrayList<Node>();
}
public static Node buildTree(int[] preOrder, int[] postOrder){
if(preOrder == null || postOrder == null){
throw new NullPointerException();
}
if(preOrder.length != postOrder.length){
throw new IllegalArgumentException();
}
return buildTree(preOrder, 0, preOrder.length-1, postOrder, 0, postOrder.length -1);
}
private static Node buildTree(int[] preOrder, int preMin, int preMax, int[] postOrder, int postMin, int postMax){
//construct the root;
Node root = new Node();
root.data = preOrder[preMin];
//construct the child branches
int preIndex = preMin + 1;
int postIndex = postMin;
while(preIndex <= preMax && postIndex <= postMax -1){
//preOrder[preIndex] is now the root of the next child branch
//find where preOrder[preIndex] occurs in postOrder
int shift = 0;
while(postOrder[postIndex + shift] != preOrder[preIndex]){
shift++;
}
Node child = buildTree(preOrder, preIndex, preIndex + shift, postOrder, postMin, postMin + shift);
root.children.add(child);
shift++;
preIndex += shift;
postIndex += shift;
}
return root;
}
类节点{
int数据;
ArrayList子项=新的ArrayList();
}
公共静态节点构建树(int[]前序,int[]后序){
if(前序==null | |后序==null){
抛出新的NullPointerException();
}
if(preOrder.length!=postOrder.length){
抛出新的IllegalArgumentException();
}
返回构建树(preOrder,0,preOrder.length-1,postOrder,0,postOrder.length-1);
}
私有静态节点构建树(int[]预序、int preMin、int preMax、int[]后序、int postMin、int postMax){
//构建根;
节点根=新节点();
root.data=preOrder[preMin];
//构造子分支
int preIndex=preMin+1;
int postIndex=postin;
而(preIndex公共的是接口契约,任何调用方都可以直接使用它。私有的是内部实现,可以创建另一个节点
实现,并提供相同的公共
接口(使用不同的方法实现)。这是一项实施决策,在概念上由(维基百科说)用于在类中隐藏结构化数据对象的值或状态,防止未经授权的方直接访问它们。根据面向对象编程的概念,公共buildTree方法可以在其他类和包中访问,但私有buildTree方法只能在类中使用。这些是ot构造函数。类节点
没有显式构造函数构造函数必须没有返回类型,并且它的名称必须与类名完全相同。您有两个重载方法,其中只有一个是公开的。