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

做外单要上什么网站长沙推广引流

做外单要上什么网站,长沙推广引流,网页制作用什么工具,厦门建设局局长李德才1.题目要求: 给你二叉树的根节点 root ,返回其节点值 自底向上的层序遍历 。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)2.此题步骤: 1.先创建好队列,出队和入队函数: //创建队列 typedef struct que…

1.题目要求:

给你二叉树的根节点 root ,返回其节点值 自底向上的层序遍历 。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)

在这里插入图片描述
2.此题步骤:
1.先创建好队列,出队和入队函数:

//创建队列
typedef struct queue{struct TreeNode* value;struct queue* next;
}queue_t;
//入队
void push(queue_t** head,struct TreeNode* data){queue_t* newnode = (queue_t*)malloc(sizeof(queue_t));newnode->value = data;newnode->next = NULL;if(*head == NULL){*head = newnode;return;}queue_t* tail = *head;while(tail->next != NULL){tail = tail->next;}tail->next = newnode;
}
//出队
struct TreeNode* pop(queue_t** head){struct TreeNode* x = (*head)->value;(*head) = (*head)->next;return x;
}

2.我们还要创造逆置函数:

void reverse(int* number,int rows){int left = 0;int right = rows - 1;while(left <= right){int temp = number[left];number[left] = number[right];number[right] = temp;left++;right--;}
}

3.在层序遍历之前,设置好各种变量(详情已在代码块里):

*returnSize = 0;if(root == NULL){return NULL;}int* each_line_nodes = (int*)malloc(sizeof(int)*2000);//记录每行结点数int j_1 = 0;int* level_order_number = (int*)malloc(sizeof(int)* 2000);//层序遍历的数组int j_2 = 0;int depth = 0;//树的高度int count = 1;//根结点的个数int nextcount = 0;//下一个结点的个数int size = 0;//记录队列中的个数queue_t* quence = NULL;//设置队列

4.进行层序遍历:

 //进行层序遍历push(&quence,root);size++;while(size != 0){depth++;for(int i = 0;i < count;i++){struct TreeNode* temp = pop(&quence);size--;level_order_number[j_2] = temp->val;j_2++;if(temp->left != NULL){push(&quence,temp->left);size++;nextcount++;}if(temp->right != NULL){push(&quence,temp->right);size++;nextcount++;}}each_line_nodes[j_1] = count;j_1++;count = nextcount;nextcount = 0;}

5.创建二维数组,把层序遍历的数组倒着存到二维数组中:

//设立二维数组int** array = (int**)malloc(sizeof(int*)* depth);//设置函数,逆置每行结点数reverse(each_line_nodes,j_1);for(int i = 0;i < depth;i++){array[i] = (int*)malloc(sizeof(int) * each_line_nodes[i]);}int f = j_2 - 1;//把层序遍历的数组倒着存入二维数组中for(int i = 0;i < depth;i++){for(int j = 0;j < each_line_nodes[i];j++){array[i][j] = level_order_number[f];f--;}}

6.开始逆置二维数组每行的元素,然后返回二维数组的地址:

 //颠倒每个二维数组的元素for(int i = 0;i < depth;i++){reverse(array[i],each_line_nodes[i]);}*returnSize = depth;*returnColumnSizes = (int*)malloc(sizeof(int) * (*returnSize));for(int i = 0;i < depth;i++){(*returnColumnSizes)[i] = each_line_nodes[i];}return array;

以下为我的全部代码:

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     struct TreeNode *left;*     struct TreeNode *right;* };*/
/*** Return an array of arrays of size *returnSize.* The sizes of the arrays are returned as *returnColumnSizes array.* Note: Both returned array and *columnSizes array must be malloced, assume caller calls free().*/
//创建队列
typedef struct queue{struct TreeNode* value;struct queue* next;
}queue_t;
//入队
void push(queue_t** head,struct TreeNode* data){queue_t* newnode = (queue_t*)malloc(sizeof(queue_t));newnode->value = data;newnode->next = NULL;if(*head == NULL){*head = newnode;return;}queue_t* tail = *head;while(tail->next != NULL){tail = tail->next;}tail->next = newnode;
}
//出队
struct TreeNode* pop(queue_t** head){struct TreeNode* x = (*head)->value;(*head) = (*head)->next;return x;
}
void reverse(int* number,int rows){int left = 0;int right = rows - 1;while(left <= right){int temp = number[left];number[left] = number[right];number[right] = temp;left++;right--;}
}
int** levelOrderBottom(struct TreeNode* root, int* returnSize, int** returnColumnSizes) {*returnSize = 0;if(root == NULL){return NULL;}int* each_line_nodes = (int*)malloc(sizeof(int)*2000);//记录每行结点数int j_1 = 0;int* level_order_number = (int*)malloc(sizeof(int)* 2000);//层序遍历的数组int j_2 = 0;int depth = 0;//树的高度int count = 1;//根结点的个数int nextcount = 0;//下一个结点的个数int size = 0;//记录队列中的个数queue_t* quence = NULL;//设置队列//进行层序遍历push(&quence,root);size++;while(size != 0){depth++;for(int i = 0;i < count;i++){struct TreeNode* temp = pop(&quence);size--;level_order_number[j_2] = temp->val;j_2++;if(temp->left != NULL){push(&quence,temp->left);size++;nextcount++;}if(temp->right != NULL){push(&quence,temp->right);size++;nextcount++;}}each_line_nodes[j_1] = count;j_1++;count = nextcount;nextcount = 0;}//设立二维数组int** array = (int**)malloc(sizeof(int*)* depth);//设置函数,逆置每行结点数reverse(each_line_nodes,j_1);for(int i = 0;i < depth;i++){array[i] = (int*)malloc(sizeof(int) * each_line_nodes[i]);}int f = j_2 - 1;//把层序遍历的数组倒着存入二维数组中for(int i = 0;i < depth;i++){for(int j = 0;j < each_line_nodes[i];j++){array[i][j] = level_order_number[f];f--;}}//颠倒每个二维数组的元素for(int i = 0;i < depth;i++){reverse(array[i],each_line_nodes[i]);}*returnSize = depth;*returnColumnSizes = (int*)malloc(sizeof(int) * (*returnSize));for(int i = 0;i < depth;i++){(*returnColumnSizes)[i] = each_line_nodes[i];}return array;
}

在这里插入图片描述
好了,这就是我的代码,如果各位觉得可以的话,可以给个免费的赞吗?谢谢了^ _ ^ .

http://www.shuangfujiaoyu.com/news/8832.html

相关文章:

  • 网页设计毕业论文8000字重庆百度快照优化
  • 福州网站建设服务价格最实惠企业网站建设报价
  • 做网站外包最牛的公司免费seo排名网站
  • 做视频好用的素材网站爱站数据官网
  • 做暧暧小视频有声音的网站推广策划方案怎么做
  • 建立网站的流程是什么怎么从网上找客户
  • 网站site的收录数量要多远索引量网络工程师培训机构排名
  • 南通公司网站制作软件培训机构排行榜
  • 可以做c oj的网站关键词搜索广告
  • 电子商务网站建设与管理考卷微信公众号推广网站
  • 网络专业的网站建设价格手机百度搜索app
  • 怎么用asp做网站运营主要做什么工作
  • 之江汇学校网站建设在百度上怎么发布广告
  • 网站开发应看什么书籍宁波seo推广
  • 做网站书网络推广赚钱项目
  • 新手学做网站 cs6百度号码认证平台个人号码申诉
  • 怎样做好服务营销网站优化排名网站
  • 广东网页空间租赁seo优化神器
  • 安徽建设厅证书查询网网站广州信息流推广公司排名
  • 太原今天刚刚发生的新闻seo教程 百度网盘
  • 网站设计哪家公司好西安网站关键词优化费用
  • 网站开发整体流程图足球积分排行榜最新
  • 做a 免费网站网络公司网络推广服务
  • 游戏道具网站开发网络营销策略都有哪些
  • 电子商务网站数据库怎么做百度网盟
  • 文件包上传的网站怎么做成品网站1688入口网页版
  • 正规的网站建设网站优化方案案例
  • 优仔电话手表网站百度关键字优化
  • 宝塔面板WordPress优化seo搜索引擎优化是做什么的
  • 没有网站也可以做推广吗平台推广是什么工作