Day20_javascanner_struct

news/2025/3/22 1:51:55/文章来源:https://www.cnblogs.com/piphermitage/p/18786138

Java

JavaDoc

javadoc命令是用来生成自己API文档的
参数信息:
@author 作者名
@version 版本号
@since 指明需要最早使用的jdk版本
@param 参数名
@return 返回值情况
@throws 异常抛出情况

/*** @author XXX* @version 1.0* @since 1.8*/public class Doc {String name;/*** @author XXX* @param name* @return* @throws Exception*/public String test(String name) throws Exception{return name;}
}

scanner

import java.util.Scanner;public class Demo01 {public static void main(String[] args) {// 创建一个扫描器对象,用于接受键盘数据Scanner scanner = new Scanner(System.in);System.out.println("使用next方式接收:");// 判断用户有没有输入字符串if (scanner.hasNext()){// 使用next方式接收String str = scanner.next(); // 程序会等待用户输入完毕System.out.println("输出的内容:"+str);}// 凡是IO流的类如果不关闭会一直占用资源,要养成用完就关的习惯scanner.close();}
}
import java.util.Scanner;public class Demo02 {public static void main(String[] args) {// 从键盘接收数据Scanner scanner = new Scanner(System.in);System.out.println("使用nextLine方式接收:");// 判断是否还有输入if (scanner.hasNextLine()){String str = scanner.nextLine();System.out.println("输出的内容为:"+str);}scanner.close();}
}
package com.xiang.scanner;import java.util.Scanner;public class Demo05 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);// 从键盘接收数据int i = 0;float f = 0.0f;System.out.println("请输入整数:");// 如果。。。那么。。。if (scanner.hasNextInt()){i = scanner.nextInt();System.out.println("整数数据:" + i);}else{System.out.println("输入的不是整数数据!");}System.out.println("请输入小数:");// 如果。。那么。。if (scanner.hasNextFloat()){f = scanner.nextFloat();System.out.println("小数数据:" + f);}else{System.out.println("输入的不是小数数据!");}scanner.close();}
}

九九乘法表

public class ForDemo04 {public static void main(String[] args) {// 打印九九乘法表for (int j = 1; j <= 9; j++) {for (int i = 1; i <= j; i++) {System.out.print(i+"*"+j+"="+(i*j)+"\t");}System.out.println();}}
}

每日一题

题目
请设计一个算法,判断给定的二叉树是否为完全二叉树(Complete Binary Tree),并分析其时间和空间复杂度。


详细分析

1. 完全二叉树的定义

完全二叉树的定义是:

除了最后一层外,其他层的节点数必须达到最大值,且最后一层的节点必须全部集中在左侧。

示例:

复制

      1            // 第1层(满)/   \2     3        // 第2层(满)/ \   /4  5 6           // 第3层(最后一层,节点靠左)

这棵树是完全二叉树。

非完全二叉树示例:

复制

      1/   \2     3/ \     \4  5     7       // 最后一层的节点未靠左

2. 算法思路

核心思想:通过层次遍历(广度优先遍历),找到第一个不满足完全二叉树条件的节点。
关键点

  • 完全二叉树中,若某个节点存在右子节点,则必须存在左子节点。
  • 在层次遍历中,若遇到某个节点只有右子节点(无左子节点),直接判定为非完全二叉树。
  • 若某个节点缺少子节点(左或右),则后续所有节点必须为叶子节点。

具体步骤

  1. 使用队列进行层次遍历。
  2. 设置一个标志位 mustBeLeaf,初始为 false
  3. 遍历每个节点时:
    • mustBeLeaftrue,但当前节点存在左或右子节点,则返回 false
    • 若当前节点左子节点为空但右子节点存在,返回 false
    • 若当前节点左子节点存在但右子节点为空,将 mustBeLeaf 设为 true
  4. 若遍历结束未发现异常,则返回 true

3. 代码实现(Python)

python

复制

class TreeNode:def __init__(self, val=0, left=None, right=None):self.val = valself.left = leftself.right = rightdef is_complete_tree(root):if not root:return Truequeue = [root]must_be_leaf = Falsewhile queue:node = queue.pop(0)if must_be_leaf:if node.left or node.right:return Falseelse:if node.left and node.right:queue.append(node.left)queue.append(node.right)elif node.left:queue.append(node.left)must_be_leaf = Trueelif node.right:return Falseelse:must_be_leaf = Truereturn True

4. 复杂度分析

  • 时间复杂度O(n),所有节点遍历一次。
  • 空间复杂度O(n),队列最多存储最后一层节点(最坏情况下为满二叉树,最后一层有 n/2 个节点)。

5. 测试用例

  1. 完全二叉树

    复制

         1/   \2     3/ \   /
    4  5 6
    

    输出:True

  2. 非完全二叉树

    复制

         1/   \2     3\     \5     7
    

    输出:False

  3. 边界情况

    • 空树:True
    • 单节点树:True

6. 考察能力

  • 对完全二叉树定义的理解。
  • 层次遍历的应用能力。
  • 边界条件的处理(如空树、单节点树)。
  • 代码实现的简洁性与鲁棒性。

百词斩

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/902738.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

k8s基本字段

k8s基本字段 limits字段 此字段限制的是硬件的资源,如果容器尝试申请超过限制的内存将会终止容器 requests字段 此字段限制的是容器可以请求的资源,可以超出request申请额外的资源,但是不能超过limits, 500m等于0.5个CPU本地临时性文件,采用这种配置时,你会把所有类型的临…

【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(3)

比赛链接 本文发布于博客园,会跟随补题进度实时更新,若您在其他平台阅读到此文,请前往博客园获取更好的阅读体验。 跳转链接:https://www.cnblogs.com/TianTianChaoFangDe/p/18786128 开题 + 补题情况 很菜的一把,就开了三个签到题,1001 Lucas 定理花了好久才看出来,明明…

51单片机学习笔记-3

串口通信UART(universal asynchronous receiver transmitter,通用异步收发器):可用来实现串口通信。串口硬件:基础串口包含TXD/RXD两个通信线,他们交叉连接。(如DB9通常使用2(RXD),3(TXD),5(GND)。) 当串口两头电平标准不一样时,需要叫电平转换芯片。TTL电平:5V表示1,…

微信小程序 -2025/3/22

HttpClient 介绍:核心api发送请求步骤小程序目录结构小程序页面组成微信登录 发送请求

应用打包测试

用HBuilder打包了一个之前写着玩的html页面

小白与Android Studio的初遇

新手小白在Android Studio上运行程序的时候遇到俩问题,通过在网上各种找解决方法,最终解决了(然后就想起来继续写博客这件事儿了)。 【第一个问题】关于“Error runningapp:No target device found”。就是它找不到设备(虚拟机或者真机),所以配置虚拟机就行了。 (当我以…

20234220 实验一《Python程序设计》实验报告

20234220 2024-2025-2 《Python程序设计》实验一报告 课程:《Python程序设计》 班级: 2342 姓名: 马燕秋 学号:20234220 实验教师:王志强 实验日期:2025年3月18日 必修/选修: 公选课 1.实验内容 1.熟悉Python开发环境; 2.练习Python运行、调试技能; 3.编写程序,练…

Echarts-普通地图和3D地图实现

效果图实现代码 <template><div class="app"><h1>普通地图----------------</h1><div class="map-container" ref="map_ref"></div><h1>3D地图----------------</h1><div class="map-c…

Navicat Premium 16 For Mac 激活,无限试用,非破解,官网安装程序,Mac版Navicat无限试用

Navicat Premium 16 For Mac 激活,无限试用,非破解,官网安装程序,Mac版Navicat无限试用Navicat Premium是一个可多重连线资料库的管理工具,它可以让你以单一程式同时连线到 MySQL、SQLite、Oracle、MariaDB、Mssql、及 PostgreSQL 资料库,让管理不同类型的资料库更加的方…

Vue3 slot

6.9. 【slot】 1. 默认插槽父组件中:<Category title="今日热门游戏"><ul><li v-for="g in games" :key="g.id">{{ g.name }}</li></ul></Category> 子组件中:<template><div class="item&…

英语四级计划第三天

第三天 单词阅读 Smaller Museums From Niche to Mainstream “小而精”的小众博物馆,正在出圈出彩 Chinas museum boom has continued to rise, leading to increased attention and visibility for smaller but more specialized museums. 中国的博物馆热潮持续升温,导致规…