【20180422】java--二叉树结构&算法学习

树--二叉树--二叉排序树BST

二叉树的java实现:

public class BinaryTreeNode {
    /*
     * 一个二叉树包括 数据、左右孩子 三部分
     */
    private int mData;
    private BinaryTreeNode mLeftChild;
    private BinaryTreeNode mRightChild;

    public BinaryTreeNode(int data, BinaryTreeNode leftChild, BinaryTreeNode rightChild) {
        mData = data;
        mLeftChild = leftChild;
        mRightChild = rightChild;

    }

有节点后接下来开始构造一个二叉树,二叉树的主要方法有:

创建
添加元素
删除元素
清空
遍历
获得树的高度
获得树的节点数
返回某个节点的父亲节点

1.二叉树的创建
创建一个二叉树很简单,只需要有一个 二叉根节点,然后提供设置根节点的方法即可:
public class BinaryTree {
    private BinaryTreeNode mRoot;   //根节点
    public BinaryTree() {
    }
    public BinaryTree(BinaryTreeNode root) {
        mRoot = root;
    }
    public BinaryTreeNode getRoot() {
        return mRoot;
    }
    public void setRoot(BinaryTreeNode root) {
        mRoot = root;
    }
}       

2.添加元素

private BinaryTreeNode searchAndInsert(BinaryTreeNode parent, BinaryTreeNode node, int data) {
    if (node == null) {  //当前比较节点为 空,说明之前没有这个数据,直接新建、插入
        node = new BinaryTreeNode();
        node.setData(data);
        if (parent != null) {    //父节点不为空,绑定关系
            if (data < parent.getData()) {
                parent.setLeftChild(node);
            } else {
                parent.setRightChild(node);
            }
        }
        return node;
    }
    //对比的节点不为空
    if (node.getData() == data) {    //已经有了,不用插入了
        return node;
    } else if (data < node.getData()) {   //比节点小,从左子树里查找、插入
        return searchAndInsert(node, node.getLeftChild(), data);
    } else {
        return searchAndInsert(node, node.getRightChild(), data);
    }

}

3.遍历二叉树

前序中序后序遍历,递归或非递归:https://blog.csdn.net/fengrunche/article/details/52305748

非递归的遍历需要借助一个或多个栈来辅助。


题目集合:https://www.jianshu.com/p/0190985635eb

猜你喜欢

转载自blog.csdn.net/kefeiliu/article/details/80036827