Merge branch 'master' of gitee.com:Eyestorm/notes

This commit is contained in:
Estom
2021-09-14 17:14:29 +08:00
4 changed files with 71 additions and 7 deletions

View File

@@ -1,5 +1,28 @@
#include<iostream>
using namespace std;
class Wood{
private:
int length;
int width;
public:
int get_length(){
return this->length;
}
int get_width(){
return this->width;
}
};
class desk:public wood{
private:
int height;
public:
int get_height(){
return this->height;
}
};
int add(int a,int b){
int c = a+b;
return c;

View File

@@ -0,0 +1 @@
1. 关于封装的讨论。

View File

@@ -28,7 +28,7 @@
### 完全二叉树
* 如果所有叶子都位于相同的水平d则称二元树是完全二叉树。完全二叉树是二叉树在0级和d级之间的每个级别包含正好$2 ^d$个节点。 具有深度d的完全二叉树中的节点总数是$2^{(d+1)}-1$,其中叶节点是$2^d&,非叶节点是$2^d-1$。
* 如果所有叶子都位于相同的水平d则称二元树是完全二叉树。完全二叉树是二叉树在0级和d级之间的每个级别包含正好$2^d$个节点。 具有深度d的完全二叉树中的节点总数是$2^{(d+1)}-1$,其中叶节点是$2^d$,非叶节点是$2^d-1$。
![](image/2021-03-12-22-12-52.png)

View File

@@ -134,6 +134,39 @@ public:
// 最后肯定是空元素组成的队列,创建一个额外的空数组。
vec.pop_back();
return vec;
}
// 区分层次的层序遍历2 改进版,单队列,单循环
vector<vector<int>> levelOrder2(TreeNode* root) {
vector<vector<int>> res;
vector<int> vec;
queue<TreeNode*> que;
que.push(root);
int N=1;
while(!que.empty()){
// 每次交换队列创建一个数组
if(que.front()==nullptr){
que.pop();
N--;
continue;
}
TreeNode*temp=que.front();
que.pop();
vec.push_back(temp->val);
N--;
que.push(temp->left);
que.push(temp->right);
//可以在这里针对每层进行操作。例如反转。
if(N==0){
res.push_back(vec);
vec.clear();
N=que.size();
}
}
return res;
}
//重建二叉树-前中
/*
@@ -174,7 +207,7 @@ int main(){
TreeNode n;
TreeNode* node=&n;
BinaryTree tree;
// tree.build(node,vec,0);
tree.build(node,vec,0);
// tree.display(node);
// cout<<endl;
// tree.pre_order(node);
@@ -182,10 +215,17 @@ int main(){
// tree.mid_order(node);
// cout<<endl;
// tree.lst_order(node);
vector<vector<int>> res = tree.levelOrder2(node);
for(auto a:res){
for(auto b:a){
cout<<b<<" ";
}
cout<<endl;
}
// 数组表示的前序遍历和后续遍历
vector<int> pre{3,9,20,15,7};
vector<int> mid{9,3,15,20,7};
TreeNode* node2 = tree.rebuild(pre,mid,0,0,mid.size()-1);
tree.display(node2);
return 0;
// vector<int> pre{3,9,20,15,7};
// vector<int> mid{9,3,15,20,7};
// TreeNode* node2 = tree.rebuild(pre,mid,0,0,mid.size()-1);
// tree.display(node2);
// return 0;
}