排序算法 二叉树的先、中、后 序遍历与层级遍历

这个作业属于那个课程 https://edu.cnblogs.com/campus/zswxy/2018SE/
这个作业要求在哪 https://edu.cnblogs.com/campus/zswxy/2018SE/homework/11406
这个作业的目标 排序算法 二叉树的先、中、后 序遍历与层级遍历
学号 20189625

一、
题目:给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个。
思路:使用Arrays.sort()对输入的数组进行排序,在找到数组a中第r-k的数就是序列中第l个数到第r个数中第K大的数
代码:

二、
题目:二叉树的先、中、后 序遍历与层级遍历
import java.util.LinkedList;

public class Main {

public static void main(String[] args) {
    /*
        作业要求:叉树的先、中、后 序遍历与层级遍历
        自己实现四个方法,main方法中调用,将结果打印到控制台
     */
    /*  二叉树的结构
                 A
                / \
               T   6
              /
             D
           /   \
          N     5
         / \    /
        B   4  1
             \
              9
     */
	 Node root = into();
     // 先序遍历
     System.out.print("先序:");
     A(root);
     System.out.println();
     // 中序遍历
     System.out.print("中序:");
     B(root);
     System.out.println();
     // 后续遍历
     System.out.print("后序:");
     C(root);
     System.out.println();
     // 层级遍历
     System.out.print("层级:");
     D(root);

 }

 private static void A(Node root) {
     // TODO 先序遍历
     if (root != null) {
         System.out.print(root.data);
         A(root.l);
         A(root.r);
     }
 }

 private static void B(Node root) {
     // TODO 中序遍历
     if (root != null) {
         B(root.l);
         System.out.print(root.data);
         B(root.r);
     }
 }

 private static void C(Node root) {
     // TODO 后序遍历
     if (root != null) {
         C(root.l);
         C(root.r);
         System.out.print(root.data);
     }
 }

 private static void D(Node root) {
     // TODO 层级遍历
     if (root != null) {
         LinkedList<Node> linkedList = new LinkedList<Node>();
         //先将根节点入队
         linkedList.offer(root);
         Node node = null;
         while (!linkedList.isEmpty()) {
             node = (Node) linkedList.pop();
             System.out.print(node.data);
             if (node.l != null) {
                 //将出队结点的左子树根入队
                 linkedList.offer(node.l);
             }
             if (node.r != null) {
                 //将出队结点的右子树根入队
                 linkedList.offer(node.r);
             }
         }
     }
     }

// 构建一颗树,返回根节点
private static Node into(){
    Node root = new Node("A");
    Node node1 = new Node("T");
    Node node2 = new Node("D");
    Node node3 = new Node("N");
    Node node4 = new Node("B");
    Node node5 = new Node("6");
    Node node6 = new Node("5");
    Node node7 = new Node("4");
    Node node8 = new Node("9");
    Node node9 = new Node("1");
    root.l = node1;
    node1.l = node2;
    node2.l = node3;
    node2.r = node6;
    node3.r = node7;
    node7.r = node8;
    node6.l = node9;
    node3.l = node4;
    root.r = node5;
    return root;
}

// 节点
static class Node{
    // 数据
    Object data;
    // 左孩子
    Node l;
    // 右孩子
    Node r;

    public Node(){}

    public Node(Object data) {
        this.data = data;
        this.l = null;
        this.r = null;
    }

    public Node(Object data, Node l, Node r) {
        this.data = data;
        this.l = l;
        this.r = r;
    }
}

}

posted @ 2020-10-28 21:35  Self--Discipline  阅读(184)  评论(0编辑  收藏  举报