当前位置: 首页 > article >正文

实习冲刺Day19

算法题

平衡二叉树

平衡二叉树也叫AVL树,它或者是一颗空树,或者具有以下性质的二叉排序树:它的左子树和左子树的高度之差(平衡因子)的绝对值不超过1,且它的左子树和右子树都是一颗平衡二叉树。

它具有一个左子树和一个右子树,且对于任意一个子树而言,左子树和右子树高度只差不超过1。

110. 平衡二叉树 - 力扣(LeetCode)

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
//记录二叉树的左右子树深度
    int fun(TreeNode*root){
        if(!root)return 0;
        int l=fun(root->left);
        int r=fun(root->right);
        return max(l,r)+1;
    }
    bool isBalanced(TreeNode* root) {
       if(!root)return true;//遍历到节点为空时,返回true
        int L=fun(root->left);//计算左子树高度
        int R=fun(root->right);//计算右子树高度
        if(abs(L-R)>1)return 0;//高度差大于1,返回false
        bool l=isBalanced(root->left);//判断左子树符合
        bool r=isBalanced(root->right);//判断右子树符合
        return l&&r;//左右子树都符合才算是平衡二叉树
        
        
    }
};

基础知识

什么是c++命名空间 有什么作用?

在C++中,命名空间(Namespace)是一种将代码组织成逻辑组的机制,用于避免不同代码模块之间的命名冲突。它提供了一个声明区域,在该区域内可以定义各种类型、函数、变量等,并且这些定义的名称在该命名空间内是唯一的。

1. 避免命名冲突:

不同的库或者代码可能存在相同的变量与函数,命名空间可以将他隔离开,使得同名的实体在各自的空间中有不同的作用域

2. 组织代码结构:命名空间有助于将相关的代码组织在一起,提高代码的可读性和可维护性。

3. 控制标识符的可见性:通过命名空间,可以控制哪些标识符在其他代码文件中是可见的,哪些是隐藏的。在一个命名空间中定义的标识符,如果没有被导出或使用 using 指令引入,在其他命名空间中是无法直接访问的,这样可以实现信息隐藏和封装,增强代码的安全性和稳定性。

如何定义使用命名空间?且交代命名空间是否允许嵌套?

使用 `namespace` 关键字来定义命名空间

namespace namespaceName {
    // 在此处放置各种类型、函数、变量等的声明或定义
}
 

using namespace std;
namespace MyNamespace {
    int n=10;
    void funn() {
        cout << "mynamesapce" << cout;
    }

int main() {
    cout << MyNamespace::n << endl;
    MyNamespace::fun();
 
    return 0;
}

在 main 函数中通过 MyNamespace:: 前缀来访问它们,这样就避免了与其他可能存在的同名变量或函数的冲突

C++ 中的命名空间是允许嵌套的。嵌套的命名空间可以进一步组织和细分代码,使其结构更加清晰,层次更加分明。


http://www.kler.cn/a/391162.html

相关文章:

  • jenkins提交gitee后自动部署
  • vue3+vite 前端打包不缓存配置
  • [HarmonyOS]简单说一下鸿蒙架构
  • 单例模式详解:如何优雅地实现线程安全的单例
  • 洞察鸿蒙生态,把握开发新机遇
  • WPF 应用程序中使用 Prism 框架时,有多种方式可以注册服务和依赖项
  • 【小程序】封装网络请求request模块
  • Pytorch如何将嵌套的dict类型数据加载到GPU
  • 【webrtc】RTX 重传包和NACK包
  • Secure Shell(SSH) 是一种网络协议
  • RDK X3 环形麦克风板录音与播放
  • STM32 设计的较为复杂的物联网项目,包括智能家居控制系统,涵盖了硬件和软件的详细设计。
  • 屏幕解析工具——OmniParser
  • vue内置方法总结
  • Qt中MainWindow的isVisible和isActiveWindow有什么区别
  • 基本和引用数据类型以及对象字面量(day14)
  • ubuntu24.04播放语音视频
  • 启动本地开发环境(自带热启动)yarn serve
  • Pytorch学习--神经网络--完整的模型验证套路
  • MacOS编译hello_xr——记一次CMake搜索路径限制导致的ANDROID_NATIVE_APP_GLUE not found
  • 网络安全-Linux基础(2)
  • 电子应用产品设计方案-5:多功能恒温控制器设计
  • 【主机游戏】正当防卫3游戏介绍
  • uniapp和uview-plus组件在项目中向后端发起请求的封装
  • 【蓝桥等考C++真题】蓝桥杯等级考试C++组第13级L13真题原题(含答案)-统计数字
  • 用轻量云服务器搭建一个开源的商城系统,含小程序和pc端