• 二叉树基本操作实现 && 树和二叉树&& 二叉树进阶oj && 堆的基本概念 && 优先级队列的使用_


    第 1 题(单选题)

    题目名称:

    3.在用树表示的目录结构中,从根目录到任何数据文件,有( )通道

    题目内容:

    A .唯一一条

    B .二条

    C .三条

    D .不一定

    第 2 题(单选题)

    题目名称:

    4.在一颗度为3的树中,度为3的结点有2个,度为2的结点有1个,度为1的结点有2个,则叶子结点有( )个

    题目内容:

    A .4

    B .5

    C .6

    D .7

    第 3 题(单选题)

    题目名称:

    5.一颗拥有1000个结点的树度为4,则它的最小深度是( )

    题目内容:

    A .5

    B .6

    C .7

    D .8

    第 4 题(单选题)

    题目名称:

    6.下列关于二叉树的叙述错误的是(   )

    题目内容:

    A .二叉树指的是深度为 2 的树

    B .一个 n 个结点的二叉树将拥有 n-1 条边

    C .一颗深度为 h 的满二叉树拥有 2^h-1 个结点(根结点深度为1)

    D .二叉树有二叉链和三叉链两种表示方式

    第 5 题(单选题)

    题目名称:

    7.一颗完全二叉树有1001个结点,其叶子结点的个数是( )

    题目内容:

    A .251

    B .500

    C .501

    D .不能确定

    第 6 题(单选题)

    题目名称:

    15.设某种二叉树有如下特点:每个结点要么是叶子结点,要么有2棵子树。假如一棵这样的二叉树中有m(m>0)个叶子结点,那么该二叉树上的结点总数为( )

    题目内容:

    A .2m+1

    B .2(m-1)

    C .2m-1

    D .2m

    第 7 题(单选题)

    题目名称:

    16.设根结点的深度为1,则一个拥有n个结点的二叉树的深度一定在(   )区间内

    题目内容:

    A .[log(n + 1),n]

    B .[logn,n]

    C .[log(n + 1),n - 1]

    D .[log(n + 1),n + 1]

    第 8 题(单选题)

    题目名称:

    14.一棵非空的二叉树的先序遍历序列与后序遍历序列正好相反,则该二叉树一定满足( )

    题目内容:

    A .所有的结点均无左孩子

    B .所有的结点均无右孩子

    C .只有一个叶子结点

    D .至多只有一个结点

    第 9 题(编程题)

    题目名称:

    判断一棵二叉树是否为平衡二叉树

    题目内容:

    判断一棵二叉树是否为平衡二叉树

    第 10 题(编程题)

    题目名称:

    另一棵树的子树

    题目内容:

    另一棵树的子树

    第 11 题(编程题)

    题目名称:

    对称二叉树

    题目内容:

    对称二叉树

    第 12 题(编程题)

    题目名称:

    检查两棵树是否相同

    题目内容:

    检查两棵树是否相同

    第 13 题(编程题)

    题目名称:

    反转二叉树

    题目内容:

    反转二叉树

    第 14 题(编程题)

    题目名称:

    实现二叉树的基本操作

    题目内容:

    1. public class BinaryTree {
    2. static class TreeNode {
    3. public char val;
    4. public TreeNode left;//左孩子的引用
    5. public TreeNode right;//右孩子的引用
    6. public TreeNode(char val) {
    7. this.val = val;
    8. }
    9. }
    10. /**
    11. * 创建一棵二叉树 返回这棵树的根节点
    12. *
    13. * @return
    14. */
    15. public TreeNode createTree() {
    16. }
    17. // 前序遍历
    18. public void preOrder(TreeNode root) {
    19. }
    20. // 中序遍历
    21. void inOrder(TreeNode root) {
    22. }
    23. // 后序遍历
    24. void postOrder(TreeNode root) {
    25. }
    26. public static int nodeSize;
    27. /**
    28. * 获取树中节点的个数:遍历思路
    29. */
    30. void size(TreeNode root) {
    31. }
    32. /**
    33. * 获取节点的个数:子问题的思路
    34. *
    35. * @param root
    36. * @return
    37. */
    38. int size2(TreeNode root) {
    39. }
    40. /*
    41. 获取叶子节点的个数:遍历思路
    42. */
    43. public static int leafSize = 0;
    44. void getLeafNodeCount1(TreeNode root) {
    45. }
    46. /*
    47. 获取叶子节点的个数:子问题
    48. */
    49. int getLeafNodeCount2(TreeNode root) {
    50. }
    51. /*
    52. 获取第K层节点的个数
    53. */
    54. int getKLevelNodeCount(TreeNode root, int k) {
    55. }
    56. /*
    57. 获取二叉树的高度
    58. 时间复杂度:O(N)
    59. */
    60. int getHeight(TreeNode root) {
    61. }
    62. // 检测值为value的元素是否存在
    63. TreeNode find(TreeNode root, char val) {
    64. return null;
    65. }
    66. //层序遍历
    67. void levelOrder(TreeNode root) {
    68. }
    69. // 判断一棵树是不是完全二叉树
    70. boolean isCompleteTree(TreeNode root) {
    71. return true;
    72. }
    73. }

    第 1 题(单选题)

    题目名称:

    8.在一颗完全二叉树中,某一个结点没有其左孩子,则该结点一定( )

    题目内容:

    A .是根结点

    B .是叶结点

    C .是分支结点

    D .在倒数第二层

    第 2 题(单选题)

    题目名称:

    9.设一棵二叉树中有3个叶子结点,有8个度为1的结点,则该二叉树中总的结点数为( )个

    题目内容:

    A .11

    B .12​

    C .13

    D .14

    第 3 题(单选题)

    题目名称:

    1.下列关于树的叙述正确的是( )

    题目内容:

    A .树中可以有环

    B .树的度是指所有结点中度最小的结点的度

    C .树的深度指的是结点数最多的那一层的深度

    D .树的根结点是所有结点的祖先结点

    第 4 题(单选题)

    题目名称:

    11.已知某二叉树的前序遍历序列为5 7 4 9 6 2 1,中序遍历序列为4 7 5 6 9 1 2,则其后序遍历序列为( )

    题目内容:

    A .4 2 5 7 6 9 1

    B .4 2 7 5 6 9 1

    C .4 7 6 1 2 9 5

    D .4 7 2 9 5 6 1

    第 5 题(单选题)

    题目名称:

    12.已知某二叉树的中序遍历序列为JGDHKBAELIMCF,后序遍历序列为JGKHDBLMIEFCA,则其前序遍历序列为( )

    题目内容:

    A .ABDGHJKCEFILM

    B .ABDGJHKCEILMF

    C .ABDHKGJCEILMF

    D .ABDGJHKCEIMLF

    第 6 题(单选题)

    题目名称:

    13.已知某二叉树的前序遍历序列为ABDEC,中序遍历序列为BDEAC,则该二叉树( )

    题目内容:

    A .是满二叉树

    B .是完全二叉树,不是满二叉树

    C .不是完全二叉树

    D .是所有的结点都没有右子树的二叉树

    第 7 题(编程题)

    题目名称:

    两个节点的最近公共祖先

    题目内容:

    两个节点的最近公共祖先

    第 8 题(编程题)

    题目名称:

    二叉树的层序遍历II

    题目内容:

    二叉树的层序遍历||

    第 9 题(编程题)

    题目名称:

    二叉树的分层遍历

    题目内容:

    二叉树的分层遍历

    第 1 题(编程题)

    题目名称:

    二叉树的后序非递归遍历

    题目内容:

    二叉树的后序非递归遍历

    第 2 题(编程题)

    题目名称:

    二叉树中序非递归遍历

    题目内容:

    二叉树中序非递归遍历

    第 3 题(编程题)

    题目名称:

    二叉树前序非递归遍历

    题目内容:

    二叉树前序非递归遍历

    第 4 题(编程题)

    题目名称:

    中序后序还原二叉树

    题目内容:

    中序后序还原二叉树

    第 5 题(编程题)

    题目名称:

    前序中序还原二叉树

    题目内容:

    前序中序还原二叉树

    第 6 题(编程题)

    题目名称:

    根据二叉树创建字符串

    题目内容:

    根据二叉树创建字符串

    第 1 题(单选题)

    题目名称:

    1.下列关于堆的叙述错误的是( )

    题目内容:

    A .堆是一种完全二叉树

    B .堆通常使用顺序表存储

    C .小堆指的是左右孩子结点都比根结点小的堆

    D .堆的删除是将尾部结点放到队顶后执行向下调整算法

    第 2 题(单选题)

    题目名称:

    2.下列关键字序列中,序列( )是堆。

    题目内容:

    A .{16,72,31,23,94,53}

    B .{94,23,31,72,16,53}

    C .{16,53,23,94,31,72}

    D .{16,23,53,31,94,72}

    第 3 题(单选题)

    题目名称:

    3.下列关于向下调整算法的说法正确的是( )

    题目内容:

    A .构建堆的时候要对每个结点都执行一次

    B .删除操作时要执行一次

    C .插入操作时要执行一次

    D .以上说法都不正确

    第 4 题(单选题)

    题目名称:

    4.在一个堆中,根节点从0开始编号,下标为 i(i > 0) 的结点的左右孩子结点及父结点的下标分别是(   )

    题目内容:

    A .2 i、2 i + 1、i /2

    B .2i、2i + 1、(i - 1)/2

    C .2i + 1、2i + 2、(i - 1)/2

    D .2i + 1、2i + 2、i/2-1

    第 5 题(单选题)

    题目名称:

    5.将一个顺序表利用向下调整的方式整理成堆的时间复杂度为(   )

    题目内容:

    A .O(nlogn)

    B .O(logn)

    C .O(1)

    D .O(n)

    第 6 题(编程题)

    题目名称:

    优先级队列(堆)的模拟实现

    题目内容:

    1. public class PriorityQueue {
    2. public int[] elem;
    3. public int usedSize;
    4. public PriorityQueue() {
    5. }
    6. /**
    7. * 建堆的时间复杂度:
    8. *
    9. * @param array
    10. */
    11. public void createHeap(int[] array) {
    12. }
    13. /**
    14. *
    15. * @param root 是每棵子树的根节点的下标
    16. * @param len 是每棵子树调整结束的结束条件
    17. * 向下调整的时间复杂度:O(logn)
    18. */
    19. private void shiftDown(int root,int len) {
    20. }
    21. /**
    22. * 入队:仍然要保持是大根堆
    23. * @param val
    24. */
    25. public void push(int val) {
    26. }
    27. private void shiftUp(int child) {
    28. }
    29. public boolean isFull() {
    30. }
    31. /**
    32. * 出队【删除】:每次删除的都是优先级高的元素
    33. * 仍然要保持是大根堆
    34. */
    35. public void pollHeap() {
    36. }
    37. public boolean isEmpty() {
    38. }
    39. /**
    40. * 获取堆顶元素
    41. * @return
    42. */
    43. public int peekHeap() {
    44. }
    45. }

    第 1 题(编程题)

    题目名称:

    最小的k个数

    题目内容:

    最小的k个数

  • 相关阅读:
    C# HTML
    Crypto/加密货币 应用
    2.PHP变量、输出、EOF、条件语句
    uniapp对tabbar封装,简单好用
    js array数组json去重
    基于Http协议实现网络爬虫读取数据
    无涯教程-JavaScript - IMDIV函数
    Python实现约瑟夫生者死者游戏可视化(单向循环链表实现)
    网络安全(黑客)自学
    SQL刷题之单表查询
  • 原文地址:https://blog.csdn.net/weixin_64308540/article/details/132881907