二叉树学习(二):二叉树的基本操作及代码实现

来源:互联网 发布:淘宝开虚拟网店流程 编辑:程序博客网 时间:2024/06/05 02:09

1、二叉树基本操作

二叉树基本操作一般包括如下:

class BinaryTree<T>{    private Node<T> root;    public BinaryTree(){};//创建一棵空二叉树    public BinryTree(T x){}  //创建一棵以数据元素x为根结点的二叉树    /*在当前二叉树的parent结点插入一个新的左子结点,若已存在左子树,则将该左子树变成新左子结点的左孩子树*/    public boolean insertLeft(T x,Node<T> parent){}    /*在当前二叉树的parent结点插入一个新的右子结点,若已存在右子树,则将该右子树变成新右子结点的右孩子树*/    public boolean insertLRight(T x,Node<T> parent){}    //删除在当前的二叉树的parent结点中的左子树    public boolean deleteLeft(Node<T> parent){}    //删除在当前的二叉树的parent结点中的右子树    public boolean deleteLeft(Node<T> parent){}    //在当前二叉树中查找数据x    public boolean search(T x){}    //按某种方式遍历当前二叉树全部结点    public void traversal(int i){}    //求当前二叉树的高度    public int getHight(Node<T> parent){}}

2、算法的实现

2.1建立一棵空二叉树

public BinaryTree(){    this.root = new Node<T>();//创建根结点,该结点数据域为空}

2.2 生成一棵二叉树

public BinaryTree(T x){    this.root = new Node<T>(x);//创建一棵以数据x为根结点的二叉树}

2.3 向二叉树插入一个左孩子结点

/*在当前二叉树的parent结点插入一个新的左子结点,若已存在左子树,则将该左子树变成新左子结点的左孩子树*/public boolean insertLeft(T x,Node<T> parent){    if(parent==null)        return false;    Node<T> p = new Node<T> x;//创建一个新结点    if(parent.lChild==null)        parent.lChild = p;    else {        //先将父结点原来的左子树设置为新结点的左子树        p.lChild = parent.lChild;        //再将新结点设置到父结点的左孩子结点        parent.lChild = p;    }    return true;}//注意,要实现本操作,必须先确定插入位置,即parent结点

2.4 向二叉树插入一个右孩子结点

实现同2.3

2.5删除二叉树的左子树

//删除当前二叉树parent结点的左子树public boolean deleteLeft(Node<T> parent){    if(parent==null)        return false;    else {        parent.lChild = null;        return true;    }}

2.6删除二叉树的右子树

实现同2.5

0 0
原创粉丝点击