这里写自定义目录标题
(Java数据结构)二叉树题目
实现二叉树类BiTree,要求实现如下功能:
1) 求二叉树中度为2的结点数。
2) 交换一棵二叉树中每个结点的左孩子和右孩子。
class BiTreeNode{
Object data;
BiTreeNode lchild, rchild;
BiTreeNode(Object d){
data=d;
lchild=rchild=null;
}
}
public class BiTree {
BiTreeNode root;
static int index=0;
public BiTree(String prestr){
char c=prestr.charAt(index++);
if(c=='#'){
root=null;
}
else{
root=new BiTreeNode(c);
root.lchild=new BiTree(prestr).root;
root.rchild=new BiTree(prestr).root;
}
}
public void print(BiTreeNode T){
if(T!=null){
System.out.print(T.data);
if(T.lchild!=null || T.rchild!=null){
System.out.print("(");
if(T.lchild!=null) print(T.lchild);
System.out.print(",");
if(T.rchild!=null) print(T.rchild);
System.out.print(")");
}
}
}
public int count(BiTreeNode T){
if(T==null)return 0;
int num=0;
if(T.lchild!=null){
num+=count(T.lchild);
}
if(T.rchild!=null){
num+=count(T.rchild);
}
if(T.lchild!=null && T.rchild!=null){
num+=1;
}
return num;
}
public void exchange(BiTreeNode T){
if(T!=null){
BiTreeNode temp;
temp=T.lchild;
T.lchild=T.rchild;
T.rchild=temp;
exchange(T.lchild);
exchange(T.rchild);
}
}
public static void main(String[] args){
String preStr = "AB##CD###";
BiTree T = new BiTree(preStr);
System.out.println("先根遍历");
T.print(T.root);
System.out.println("Count:"+T.count(T.root));
T.exchange(T.root);
T.print(T.root);
}
}
最后的实例方法为我自己编写的,可以自己改成自己所需要的二叉树。有问题欢迎提出,尽力解答!!!