二叉树
This commit is contained in:
parent
8b699d0cc4
commit
eb112b33ad
@ -64,4 +64,70 @@ int
|
||||
int max = 0, current = 0;
|
||||
preorder(root, max, current);
|
||||
return max;
|
||||
}
|
||||
|
||||
vector<double> ¶þ²æËÑË÷Ê÷::averageOfLevels(TreeNode* root)
|
||||
{
|
||||
vector<TreeNode*> vec{ root };
|
||||
vector<double> ans;
|
||||
while (!vec.empty() && vec.size() > 0) {
|
||||
vector<TreeNode*> layerVec;
|
||||
double value = 0;
|
||||
for (int i = 0; i < vec.size(); i++) {
|
||||
value += vec[i]->val;
|
||||
if (vec[i]->left != nullptr)
|
||||
layerVec.push_back(vec[i]->left);
|
||||
if (vec[i]->right != nullptr)
|
||||
layerVec.push_back(vec[i]->right);
|
||||
}
|
||||
if (vec.size() > 0)
|
||||
ans.push_back(value / vec.size());
|
||||
vec = layerVec;
|
||||
}
|
||||
return ans;
|
||||
}
|
||||
|
||||
vector<int> ¶þ²æËÑË÷Ê÷::rightSideView(TreeNode* root) {
|
||||
vector<TreeNode*> vec{ root };
|
||||
vector<int> ans;
|
||||
if (root == nullptr)
|
||||
return ans;
|
||||
while (!vec.empty() && vec.size() > 0) {
|
||||
vector<TreeNode*> layerVec;
|
||||
for (int i = 0; i < vec.size(); i++) {
|
||||
if (vec[i]->right != nullptr)
|
||||
layerVec.push_back(vec[i]->right);
|
||||
if (vec[i]->left != nullptr)
|
||||
layerVec.push_back(vec[i]->left);
|
||||
}
|
||||
if (vec.size() > 0)
|
||||
ans.push_back(vec[0]->val);
|
||||
vec = layerVec;
|
||||
}
|
||||
return ans;
|
||||
}
|
||||
|
||||
vector<vector<int>> ¶þ²æËÑË÷Ê÷::zigzagLevelOrder(TreeNode* root) {
|
||||
vector<TreeNode*> vec{ root };
|
||||
vector<vector<int>> ans;
|
||||
if (root == nullptr)
|
||||
return ans;
|
||||
int row = 0;
|
||||
while (!vec.empty() && vec.size() > 0) {
|
||||
vector<TreeNode*> layerVec;
|
||||
vector<int> list;
|
||||
for (int i = 0; i < vec.size(); i++) {
|
||||
list.push_back(vec[i]->val);
|
||||
if (vec[i]->right != nullptr)
|
||||
layerVec.push_back(vec[i]->right);
|
||||
if (vec[i]->left != nullptr)
|
||||
layerVec.push_back(vec[i]->left);
|
||||
}
|
||||
if (row % 2 == 0)
|
||||
reverse(list.begin(), list.end());
|
||||
ans.push_back(list);
|
||||
vec = layerVec;
|
||||
row++;
|
||||
}
|
||||
return ans;
|
||||
}
|
@ -1,4 +1,7 @@
|
||||
#pragma once
|
||||
#include <vector>
|
||||
using namespace std;
|
||||
|
||||
struct TreeNode {
|
||||
int val;
|
||||
TreeNode* left;
|
||||
@ -15,5 +18,11 @@ public:
|
||||
int getMinimumDifference(TreeNode* root);
|
||||
// 104. 二叉树的最大深度
|
||||
int maxDepth(TreeNode* root);
|
||||
// 637. 二叉树的层平均值
|
||||
vector<double> averageOfLevels(TreeNode* root);
|
||||
// 199. 二叉树的右视图
|
||||
vector<int> rightSideView(TreeNode* root);
|
||||
// 103. 二叉树的锯齿形层序遍历
|
||||
vector<vector<int>> zigzagLevelOrder(TreeNode* root);
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user