数据结构、树
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
树
class BinaryNode
public E data;
public BinaryNode
public BinaryNode(E data,BinaryNode
{
this.data=data;
this.left =left ;
this.right=right;
}
public BinaryNode(E data){
this(data,null,null);
}
public BinaryNode(){
this(null,null,null);
}
public boolean isLeaf()
{
return this.left ==null&&this.right==null;
}
public String toString()
{
return this.data .toString();
}
}
class BinaryTree
private int i=0;
private int qq=0;
private int qqq=0;
private int cc=0;
private int su=0;
private int ww=0;
private int jilu=0;
private int cen=0;
protected BinaryNode
public BinaryTree(){
root=null;
}
public BinaryTree(BinaryNode
{
this.root =root;
}
public boolean isEmpty(){
return this.root ==null;
}
public BinaryNode
return this.root ;
}
public void preOrder(){
System.out.print("\n 先根序列");
preOrder(root);
}
private void preOrder(BinaryNode
if(p!=null){
System.out.print(p.data+" ");
preOrder(p.left);
preOrder(p.right);
}
}
public void inOrder(){
System.out.print("\n 中根序列");
inOrder(root);
}
private void inOrder(BinaryNode
{
if(p!=null)
{
inOrder(p.left);
System.out.print(p.data +" ");
inOrder(p.right);
}
}
public void postOrder(){
System.out.print("\n");
postOrder(root);
}
private void postOrder(BinaryNode
if(p!=null){
postOrder(p.left );
postOrder(p.right);
System.out.print(p.data+" ");
}
}
public BinaryTree(E[] preorder){
root=create(preorder);
}
private BinaryNode
BinaryNode
if(i E elem=preorder[i]; i++; if(elem!=null) { p=new BinaryNode p.left=create(preorder); p.right=create(preorder); } } return p; } public void leaf() { System.out.print("叶子结点"); leaf(root); } private void leaf(BinaryNode { if(a!=null) { if(a.isLeaf()) { System.out.print( a.data.toString()+" "); } leaf(a.left); leaf(a.right); } } private void leafshu(BinaryNode { if(a!=null) { if(a.isLeaf()) { su++; } leafshu(a.left); leafshu(a.right); } } public void leafsu() { this.leafshu(root); System.out.println("叶子结点个数:"+su); } public void zyh() { this.zyh(root); } private void zyh(BinaryNode { if(a!=null) { BinaryNode a.left =a.right; a.right=c; zyh(a.left); zyh(a.right); } } public int height() { return height(root); } private int height(BinaryNode if(p!=null) { int ld=height(p.left ); int rd=height(p.right); return (ld>=rd)?ld+1:rd+1; } return 0; } public void wanquan() { cen=this.height()-1; this.wanquan(root); if(ww>0||jilu>1||cen System.out.println("no"); else System.out.println("yes"); } private void wanquan(BinaryNode { if(a!=null){ if(!a.isLeaf()){ if(a.left==null||a.right ==null) ww++; else if(a.right .isLeaf()&&a.left.isLeaf()&&cen!=this.cengci(a.right.data)) {cen--; if(cen!=this.cengci(right.data)) cen--; } else if(a.left .isLeaf()&&!a.right .isLeaf()) cen=cen-6; else if(!a.left.isLeaf()&&a.right .isLeaf()&&cen>this.cengci(a.left.data)+1) cen=cen-10; if(a.right ==null&&a.left .isLeaf()) { cen--; jilu++; ww--; } wanquan(a.left); wanquan(a.right);