网站建设公司的方案,前端网站开发心得体会,深圳做的好的电子行业招聘网站,用word文档做网站算法题
平衡二叉树
平衡二叉树也叫AVL树#xff0c;它或者是一颗空树#xff0c;或者具有以下性质的二叉排序树#xff1a;它的左子树和左子树的高度之差(平衡因子)的绝对值不超过1#xff0c;且它的左子树和右子树都是一颗平衡二叉树。
它具有一个左子树和一个右子树它或者是一颗空树或者具有以下性质的二叉排序树它的左子树和左子树的高度之差(平衡因子)的绝对值不超过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 lfun(root-left);int rfun(root-right);return max(l,r)1;}bool isBalanced(TreeNode* root) {if(!root)return true;//遍历到节点为空时返回trueint Lfun(root-left);//计算左子树高度int Rfun(root-right);//计算右子树高度if(abs(L-R)1)return 0;//高度差大于1返回falsebool lisBalanced(root-left);//判断左子树符合bool risBalanced(root-right);//判断右子树符合return lr;//左右子树都符合才算是平衡二叉树}
};
基础知识
什么是c命名空间 有什么作用
在C中命名空间Namespace是一种将代码组织成逻辑组的机制用于避免不同代码模块之间的命名冲突。它提供了一个声明区域在该区域内可以定义各种类型、函数、变量等并且这些定义的名称在该命名空间内是唯一的。
1. 避免命名冲突
不同的库或者代码可能存在相同的变量与函数命名空间可以将他隔离开使得同名的实体在各自的空间中有不同的作用域
2. 组织代码结构命名空间有助于将相关的代码组织在一起提高代码的可读性和可维护性。
3. 控制标识符的可见性通过命名空间可以控制哪些标识符在其他代码文件中是可见的哪些是隐藏的。在一个命名空间中定义的标识符如果没有被导出或使用 using 指令引入在其他命名空间中是无法直接访问的这样可以实现信息隐藏和封装增强代码的安全性和稳定性。
如何定义使用命名空间且交代命名空间是否允许嵌套
使用 namespace 关键字来定义命名空间
namespace namespaceName {// 在此处放置各种类型、函数、变量等的声明或定义
} using namespace std;
namespace MyNamespace {int n10;void funn() {cout mynamesapce cout;}int main() {cout MyNamespace::n endl;MyNamespace::fun();return 0;
}
在 main 函数中通过 MyNamespace:: 前缀来访问它们这样就避免了与其他可能存在的同名变量或函数的冲突
C 中的命名空间是允许嵌套的。嵌套的命名空间可以进一步组织和细分代码使其结构更加清晰层次更加分明。