TA的每日心情 | 开心 2021-3-12 23:18 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
1,Component 是抽象组件, Tree 和Leaf 继承Component
private String name; //树或叶子的名称
addChild(Component leftChild,Component rightChild);
//给一个树上加上一个左孩子,一个右孩子
getName(){return name;}
getTreeInfo(){} //得到树或叶子的详细信息
getLength(); //得到树的高度 2,Tree 二叉树,一个左孩子,一个右孩子 3,Leaf 是叶子节点
4,Test 是测试节点 /** Component.java **************/
- /** Component.Java **************/
- package binarytree;
- public abstract class Component {
- private String name;
- public abstract Component addChild(Component leftChild,Component rightChild);
- public String getName(){return name;}
- public void getTreeInfo(){}
- public abstract int getLength();
- }
- /** Leaf.java **************/
- package binarytree;
- public class Leaf extends Component{
- private String name;
- private Component leaf=null;
- public Leaf(String name) {
- this.name=name;
- }
复制代码
- public Component addChild(Component leftChild,Component rightChild){
- return this;
- }
- public String getName(){
- return name;
- }
- public int getLength() {
- return 1;
- }
- public static void main(String[] args) {
- }
- }
- /** Tree.java **************/
- package binarytree;
- public class Tree extends Component {
- private String name;
- private Component leftChild;
- private Component rightChild;
- public Tree(String name,Component leftChild,Component rightChild) {
- this.name=name;
- this.leftChild=leftChild;
- this.rightChild=rightChild;
- }
- public Tree(String name) {
- this.name=name;
- this.leftChild=null;
- this.rightChild=null;
- }
- public Component addChild(Component leftChild,Component rightChild){
- this.leftChild=leftChild;
- this.rightChild=rightChild;
- return this;
- }
- public String getName(){
- return name;
- }
- public void getTreeInfo()
- //得到树或叶子的详细信息
- //先打印自己的名字,再遍例左孩子,再遍例右孩子
- //如果左孩子或右孩子是树,递归调用
- {
- System.out.println(" this trees name is "+getName());
- if(this.leftChild instanceof Leaf){
- System.out.println(getName()+"s left child is "+this.leftChild.getName()+",it is a Leaf");
- }
- if(this.leftChild instanceof Tree){
- System.out.println(getName()+"s left child is "+this.leftChild.getName()+",it is a Tree");
- this.leftChild.getTreeInfo();
- }
- if(this.leftChild==null){
- System.out.println(getName()+"s left child is a null");
- }
- if(this.rightChild instanceof Leaf){
- System.out.println(getName()+"s right child is "+this.rightChild.getName()+",it is a Leaf");
- }
- if(this.rightChild instanceof Tree) {
- System.out.println(getName()+"s right child is "+this.rightChild.getName()+",it is a Tree");
- this.rightChild.getTreeInfo();
- }
- if(this.rightChild==null){
- System.out.println(getName()+"s right child is a null");
- }
- //System.out.println(getName()+"s 高度 是 "+getLength());
- }
- public int getLength() {
- //比较左孩子或右孩子的高度,谁大,+1 返回
- // 空孩子的处理
- if(this.leftChild==null) {
- if(this.rightChild==null)
- return 1;
- else
- return this.rightChild.getLength()+1;
- }else {
- if(this.rightChild==null) {
- return this.leftChild.getLength()+1;
- }else {
- if((this.leftChild.getLength())>=(this.rightChild.getLength()))
- return this.leftChild.getLength()+1;
- else
- return this.rightChild.getLength()+1;
- }
- }
- }
- public static void main(String[] args) {
- }
- }
- /** Test.java 测试类 **************/
- package binarytree;
- public class Test {
- public Test() {}
- public static void main(String[] args) {
- Component tree=new Tree("luopeng");
- Component leaf_child=new Leaf("luopeng1");
- Component right_child=new Leaf("luopeng2");
- tree=tree.addChild(leaf_child,right_child);
- //tree=tree.addRightChild(right_child);
- tree.getTreeInfo();
- Component tree1=new Tree("luopeng2");
- tree1.addChild(tree,leaf_child);
- tree1.getTreeInfo();
- Component tree2=new Tree("luopeng3");
- tree2.addChild(tree,null);
- tree2.getTreeInfo();
- Component tree4=new Tree("luopeng4");
- tree4.addChild(null,tree);
- tree4.getTreeInfo();
- System.out.println(tree4.getName()+"的高度是 "+tree4.getLength());
- }
- }
复制代码
程序运行结果: C:java>java Test
this trees name is luopeng
luopengs left child is luopeng1,it is a Leaf
luopengs right child is luopeng2,it is a Leaf
this trees name is luopeng2
luopeng2s left child is luopeng,it is a Tree
this trees name is luopeng
luopengs left child is luopeng1,it is a Leaf
luopengs right child is luopeng2,it is a Leaf
luopeng2s right child is luopeng1,it is a Leaf
this trees name is luopeng3
luopeng3s left child is luopeng,it is a Tree
this trees name is luopeng
luopengs left child is luopeng1,it is a Leaf
luopengs right child is luopeng2,it is a Leaf
luopeng3s right child is a null
this trees name is luopeng4
luopeng4s left child is a null
luopeng4s right child is luopeng,it is a Tree
this trees name is luopeng
luopengs left child is luopeng1,it is a Leaf
luopengs right child is luopeng2,it is a Leaf
luopeng4的高度是 3
源码下载:http://file.javaxxz.com/2014/10/28/235740796.zip |
|