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

简介: 二叉树基本操作实现 && 树和二叉树&& 二叉树进阶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 题(编程题)

题目名称:

实现二叉树的基本操作

题目内容:

public class BinaryTree {
    static class TreeNode {
        public char val;
        public TreeNode left;//左孩子的引用
        public TreeNode right;//右孩子的引用
        public TreeNode(char val) {
            this.val = val;
        }
    }
    /**
     * 创建一棵二叉树 返回这棵树的根节点
     *
     * @return
     */
    public TreeNode createTree() {
    }
    // 前序遍历
    public void preOrder(TreeNode root) {
    }
    // 中序遍历
    void inOrder(TreeNode root) {
    }
    // 后序遍历
    void postOrder(TreeNode root) {
    }
    public static int nodeSize;
    /**
     * 获取树中节点的个数:遍历思路
     */
    void size(TreeNode root) {
    }
    /**
     * 获取节点的个数:子问题的思路
     *
     * @param root
     * @return
     */
    int size2(TreeNode root) {
    }
    /*
     获取叶子节点的个数:遍历思路
     */
    public static int leafSize = 0;
    void getLeafNodeCount1(TreeNode root) {
    }
    /*
     获取叶子节点的个数:子问题
     */
    int getLeafNodeCount2(TreeNode root) {
    }
    /*
    获取第K层节点的个数
     */
    int getKLevelNodeCount(TreeNode root, int k) {
    }
    /*
     获取二叉树的高度
     时间复杂度:O(N)
     */
    int getHeight(TreeNode root) {
    }
    // 检测值为value的元素是否存在
    TreeNode find(TreeNode root, char val) {
        return null;
    }
    //层序遍历
    void levelOrder(TreeNode root) {
    }
    // 判断一棵树是不是完全二叉树
    boolean isCompleteTree(TreeNode root) {
        return true;
    }
}

第 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 题(编程题)

题目名称:

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

题目内容:

public class PriorityQueue {
    public int[] elem;
    public int usedSize;
    public PriorityQueue() {
    }
    /**
     * 建堆的时间复杂度:
     *
     * @param array
     */
    public void createHeap(int[] array) {
    }
    /**
     *
     * @param root 是每棵子树的根节点的下标
     * @param len  是每棵子树调整结束的结束条件
     * 向下调整的时间复杂度:O(logn)
     */
    private void shiftDown(int root,int len) {
    }
    /**
     * 入队:仍然要保持是大根堆
     * @param val
     */
    public void push(int val) {
    }
    private void shiftUp(int child) {
    }
    public boolean isFull() {
    }
    /**
     * 出队【删除】:每次删除的都是优先级高的元素
     * 仍然要保持是大根堆
     */
    public void pollHeap() {
    }
    public boolean isEmpty() {
    }
    /**
     * 获取堆顶元素
     * @return
     */
    public int peekHeap() {
    }
}

第 1 题(编程题)

题目名称:

最小的k个数

题目内容:

最小的k个数

相关文章
|
缓存 负载均衡 监控
每日一博 - 反向代理、API 网关、负载均衡
每日一博 - 反向代理、API 网关、负载均衡
604 0
|
8月前
|
人工智能 自然语言处理 数据可视化
AutoAgents:比LangChain更激进的AI开发神器!自然语言生成AI智能体军团,1句话搞定复杂任务
AutoAgents 是基于大型语言模型的自动智能体生成框架,能够根据用户设定的目标自动生成多个专家角色的智能体,通过协作完成复杂任务。支持动态生成智能体、任务规划与执行、多智能体协作等功能。
1455 91
|
存储 监控 BI
如何设置AD域用户仅登录到指定的计算机?AD域管理软件
本文介绍了如何使用AD域服务限制用户仅能登录特定计算机,包括通过属性设置和脚本实现。此外,提到了ADManagerPlus这款工具,它能够批量管理AD域用户,包括创建、修改用户信息,分配权限,并通过报表监控用户状态,有效提升AD域管理效率。
449 0
|
6月前
|
机器学习/深度学习 人工智能 数据中心
《从“高温警报”到“持续冷静”:相变浸没液冷的散热逆袭之路》
相变浸没液冷技术为数据中心和人工智能计算的散热难题提供了高效解决方案。通过将设备浸没于特殊冷却液中,利用相变原理快速带走热量,实现全方位冷却。相比传统风冷和液冷,该技术显著降低设备温度、能耗和故障率,提升运行效率与空间利用率。在AI计算中,它确保芯片稳定工作,加速模型训练。尽管存在成本和技术普及等挑战,但随着技术进步,其应用前景广阔,有望推动数据中心与AI计算的进一步发展。
142 0
|
10月前
|
存储 人工智能 JavaScript
【AI系统】公共表达式消除原理
公共子表达式消除(CSE)是编译器优化技术,旨在通过识别并消除重复计算的表达式,减少计算量,提升程序执行效率。CSE分为局部和全局两种,局部CSE仅在单个基本块内操作,而全局CSE跨越多个基本块。技术手段包括局部值编号和缓式代码移动等,广泛应用于传统编译器及AI编译器中,有效简化计算图,降低计算成本。
240 4
|
11月前
|
SQL 安全 网络协议
网络空间安全之一个WH的超前沿全栈技术深入学习之路(1-2):渗透测试行业术语扫盲)作者——LJS
网络空间安全之一个WH的超前沿全栈技术深入学习之路(1-2):渗透测试行业术语扫盲)作者——LJS
|
12月前
|
运维 自然语言处理 开发者
作为一名运维人员,使用通义灵码个人版处理日常工作中的代码相关任务,极大地提升了我的工作效率。以下是我使用通义灵码的具体实践场景、效果和心得,以及相应的截图。
作为一名运维人员,我使用通义灵码处理日常工作中的代码任务,效率提升了30%。通义灵码帮助我快速理解复杂代码、生成准确的代码注释,并能从自然语言生成代码示例,大幅减少了代码编写和理解的时间。
309 3
visualscope的使用方法
visualscope的使用方法
478 0
visualscope的使用方法
|
存储 Java 开发者
Java-数据结构(三)-List:ArrayList和LinkedList及其相关面试题
Java-数据结构(三)-List:ArrayList和LinkedList及其相关面试题
389 0