美文网首页
递归实现二叉树排序及结点查询

递归实现二叉树排序及结点查询

作者: 涣涣虚心0215 | 来源:发表于2022-02-17 01:12 被阅读0次

二叉树的数据结构就是一个个结点,节点内部有指向左右子结点。

@Data
public class Node {
    private Object data;
    private Node leftChild;
    private Node rightChild;
    public Node(Object data) {
        this.data = data;
    }
    public Node(Object data, Node leftChild, Node rightChild) {
        this.data = data;
        this.leftChild = leftChild;
        this.rightChild = rightChild;
    }
    @Override
    public String toString() {
        return "Node{" +
                "data=" + data +
                ", leftChild=" + leftChild +
                ", rightChild=" + rightChild +
                '}';
    }
}

二叉树通过递归实现先序,中序和后序排列

public class BinaryTreeImpl implements BinaryTree {
    private Node root;
    public BinaryTreeImpl(Node root) {
        this.root = root;
    }
    @Override
    public boolean isEmpty() {
        return null == root;
    }
    @Override
    public int size() {
        return size(root);
    }
    private int size(Node node) {
        if (null != node) {
            int ls = size(node.getLeftChild());
            int rs = size(node.getRightChild());
            return ls + rs + 1;
        } else {
            return 0;
        }
    }
    @Override
    public int getHeight() {
        return getHeight(root);
    }
    private int getHeight(Node node) {
        if (null != node) {
            int ls = getHeight(node.getLeftChild());
            int rs = getHeight(node.getRightChild());
            return ls > rs ? ls + 1 : rs + 1;
        } else {
            return 0;
        }
    }
    @Override
    public Node findKey(Node node) {
        return findKey(node, root);
    }
    private Node findKey(Node node, Node root) {
        if (null != root) {
            if (root.getData() == node.getData()) {
                return root;
            }
            Node result = findKey(node, root.getLeftChild());
            if (null != result) {
                return result;
            }
            result = findKey(node, root.getRightChild());
            if (null != result) {
                return result;
            }
        }
        return null;
    }
    @Override
    public void preOrderTraverse() {
        System.out.println("Start preOrderTraverse");
        preOrderTraverse(root);
    }
    private void preOrderTraverse(Node node) {
        if (node != null) {
            System.out.print(node.getData() + " ");
            preOrderTraverse(node.getLeftChild());
            preOrderTraverse(node.getRightChild());
        }
    }
    @Override
    public void postOrderTraverse() {
        System.out.println("Start postOrderTraverse");
        postOrderTraverse(root);
    }
    private void postOrderTraverse(Node node) {
        if (node != null) {
            postOrderTraverse(node.getLeftChild());
            postOrderTraverse(node.getRightChild());
            System.out.print(node.getData() + " ");
        }
    }
    @Override
    public void innerOrderTraverse() {
        System.out.println("Start innerOrderTraverse");
        innerOrderTraverse(root);
    }
    private void innerOrderTraverse(Node node) {
        if (node != null) {
            innerOrderTraverse(node.getLeftChild());
            System.out.print(node.getData() + " ");
            innerOrderTraverse(node.getRightChild());
        }
    }
}

相关文章

  • 递归实现二叉树排序及结点查询

    二叉树的数据结构就是一个个结点,节点内部有指向左右子结点。 二叉树通过递归实现先序,中序和后序排列

  • 机试常用算法和题型-树专题

    静态创建新结点、构造二叉树实现前序中序遍历还原 二叉排序树查找、插入、构造科学方法 二叉排序树建立,非递归遍历方法...

  • 二叉树

    来源 二叉树 前序、中序、后序、层次遍历及非递归实现 查找、统计个数、比较、求深度的递归实现 二叉树的实现及先序、...

  • 排序

    八大排序算法 一、归并排序 递归及非递归的JAVA实现 二、快速排序 快排算法JAVA实现 三、堆排序 堆排序堆排...

  • 面试算法--递归/循环实现二叉树的前丶中丶后序遍历

    一丶利用二叉树前序顺序构建二叉树 "#" 代表空结点 二丶递归实现二叉树前中后序遍历 三丶循环实现二叉树前中后序遍...

  • 算法之二叉树

    二叉树之C++实现 创建二叉树 复制二叉树 先序遍历 递归实现 非递归实现 中序遍历 递归实现 非递归实现 后序遍...

  • 二叉树遍历-JAVA实现

    基础二叉树 二叉树遍历分为前序、中序、后序递归和非递归遍历、还有层序遍历。 前序递归遍历算法:访问根结点-->递归...

  • 面试题

    面试题 二叉树 非递归实现二叉树遍历 节点: 前序遍历 中序遍历 后序遍历 排序 快速排序 其他问题 算法题 给一...

  • 使用递归、二叉树、实现排序

    使用递归方式实现二叉树,再通过二叉树的结构特点对切片进行排序。 当然了,排序还有很多种方法...二叉树使用场景多用...

  • 数据结构之二叉树

    数据结构之二叉树 递归构造二叉树 二叉树节点: 递归构造: 图示: 递归遍历 递归实现先序遍历 图示: 递归实现中...

网友评论

      本文标题:递归实现二叉树排序及结点查询

      本文链接:https://www.haomeiwen.com/subject/mtejlrtx.html