当前位置:编程学习 > JAVA >>

数据结构之树-二叉树(Java版本)

[java]
/**
 * 链接二叉树的结点
 */ 
package 树.二叉树; 
 
public class BinaryTreeNode { 
    private Object element;//结点元素 
    private  BinaryTreeNode leftChild;//左子树  
    private  BinaryTreeNode rightChild; //右子树 
 
    /**
     * 无参构造函数
     */ 
    public BinaryTreeNode() { 
    } 
 
    /**
     * 指定结点元素的构造函数
     * @param theElement
     */ 
    public BinaryTreeNode(Object theElement) { 
        element = theElement; 
    } 
 
    /**
     * 指定结点元素,左孩子,右孩子的构造函数
     * @param theElement 结点元素
     * @param theleftChild 左孩子
     * @param therightChild 右孩子
     */ 
    public BinaryTreeNode(Object theElement, BinaryTreeNode theleftChild, 
            BinaryTreeNode therightChild) { 
        element = theElement; 
        leftChild = theleftChild; 
        rightChild = therightChild; 
    } 
 
    /**
     * 获取当前结点大的左孩子
     * @return 当前结点的左孩子
     */ 
    public BinaryTreeNode getLeftChild() { 
        return leftChild; 
    } 
 
    /**
     * 获取当前结点的右孩子
     * @return 当前结点的右孩子
     */ 
    public BinaryTreeNode getRightChild() { 
        return rightChild; 
    } 
 
    /**
     * 获取当前结点的元素
     * @return 当前结点的元素
     */ 
    public Object getElement() { 
        return element; 
    } 
 
    /**
     * 设置当前结点的左孩子
     * @param theLeftChild 当前结点设置后的左孩子
     */ 
    public void setLeftChild(BinaryTreeNode theLeftChild) { 
        leftChild = theLeftChild; 
    } 
 
    /**
     * 设置当前结点 的右孩子
     * @param theRightChild 当前结点设置后的右孩子
     */ 
    public void setRightChild(BinaryTreeNode theRightChild) { 
        rightChild = theRightChild; 
    } 
 
    /**
     * 设置当前结点的元素
     * @param theElement 当前结点设置后的元素
     */ 
    public void setElement(Object theElement) { 
        element = theElement; 
    } 
 
    /**
     * 打印当前结点元素
     */ 
    public String toString() { 
        return element.toString(); 
    } 
 

 

[java] 
/**
 * 数据结构学习之二叉树
 * @author Sking
 */ 
package 树.二叉树; 
 
import java.lang.reflect.*; 
public interface BinaryTree {//二叉树接口 
 
    /**
     * 判断二叉树是否为空
     * @return 二叉树为空则返回true,否则返回false
     */ 
    public boolean isEmpty(); 
 
    /**
     * 返回二叉树的根
     * @return 二叉树的根
     */ 
    public Object root(); 
 
    /**
     * 指定根,左孩子,右孩子创建二叉树
     * @param root 根
     * @param left 做孩子
     * @param right 右孩子
     */ 
    public void makeTree(Object root, Object left, Object right); 
 
    /**
     * 删除二叉树的左子树并返回
     * @return 二叉树的左子树
     */ 
    public BinaryTree removeLeftSubtree(); 
 
    /**
     * 删除二叉树的右子树并返回
     * @return 二叉树的右子树
     */ 
    public BinaryTree removeRightSubtree(); 
 
    /**
     * 使用指定的节点访问方法前序遍历二叉树
     * @param visit 指定的节点访问方法
     */ 
    public void preOrder(Method visit); 
 
    /**
     * 使用指定的节点访问方法中序遍历二叉树
     * @param visit 指定的节点访问方法
     */ 
    public void inOrder(Method visit); 
 
    /**
     * 使用指定的节点访问方法后序遍历二叉树
     * @param visit 指定的节点访问方法
     */ 
    public void postOrder(Method visit); 
 
    /**
     * 使用指定的节点访问方法层序遍历二叉树
     * @param visit 指定的节点访问方法
     */ 
    public void levelOrder(Method visit); 

 

[java] 
/**
 * 二叉树的遍历类,含有前序,后序,中序,层序遍历
 * @author Sking
 */ 
package 树.二叉树; 
import 队列.ArrayQueue; 
public class BinaryTreeTraversal { 
    /**
     * 访问指定二叉树结点
     * @param t 被访问的二叉树结点
     */ 
    public static void visit(BinaryTreeNode t) { 
        System.out.print(t.getElement() + " "); 
    } 
 
  

补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,