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

济南会做网站的公司哪些公司做网站好

济南会做网站的公司,哪些公司做网站好,怎样在国外网站上做宣传,做网站素材图片NO.116 填充每个节点的下一个右侧节点指针 给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下: struct Node {int val;Node *left;Node *right;Node *next; } 填充它的每个 next 指针,…

NO.116 填充每个节点的下一个右侧节点指针

给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:

struct Node {int val;Node *left;Node *right;Node *next;
}

填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL

初始状态下,所有 next 指针都被设置为 NULL

示例 1:

输入:root = [1,2,3,4,5,6,7]
输出:[1,#,2,3,#,4,5,6,7,#]
解释:给定二叉树如图 A 所示,你的函数应该填充它的每个 next 指针,以指向其下一个右侧节点,如图 B 所示。序列化的输出按层序遍历排列,同一层节点由 next 指针连接,'#' 标志着每一层的结束。

示例 2:

输入:root = []
输出:[]

本题难点在于如何填充每个节点的next 指针,让这个指针指向其下一个右侧节点。如何获取队列中下一个节点,我们还没有遍历到下一个节点,怎么能获取下一个节点的指针呢?

这里的思路是保存上一个遍历节点的指针,让它的next指针指向当前节点。是不是很巧妙,和我们自然的思路不太一样。

因为我们用到了前节点的变量,而头节点并没有前节点,所以需要单独考虑情况。

完整代码如下

class Solution {
public:Node* connect(Node* root) {queue<Node*> que;if(root != NULL){que.push(root);}while(!que.empty()){// 如何判断每一层的个数//记录队列的大小int size = que.size();//建立当前节点Node* node;Node* prenode;// 遍历队列,放入数组for(int i = 0; i < size; i++ ){//如果遍历到这一层的头节点if(i == 0){node = que.front();prenode = node;}else{//出队列第一个元素放入数组node = que.front();//上一个节点的next指针指向当前节点prenode->next = node;//将前节点更新为当前节点prenode = node;}//将左右节点入队列if(node->left) que.push(node->left);if(node->right) que.push(node->right);//将当前节点弹出que.pop();}//这一层遍历完,将最后一个元素的next设置为nullnode->next = NULL;}return root;}
};

总结与反思

层序遍历最关键的是深刻理解整个for循环是每一层遍历的核心,这样添加代码就会更加自如,知道是在层前还是层中还是层后。

写完代码,可以验证一遍测试用例,发现bug,避免显而易见的错误。

NO.117 填充每个节点的下一个右侧节点指针II

给定一个二叉树:

struct Node {int val;Node *left;Node *right;Node *next;
}

填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL 。

初始状态下,所有 next 指针都被设置为 NULL 。

示例 1:

输入:root = [1,2,3,4,5,null,7]
输出:[1,#,2,3,#,4,5,7,#]
解释:给定二叉树如图 A 所示,你的函数应该填充它的每个 next 指针,以指向其下一个右侧节点,如图 B 所示。序列化输出按层序遍历顺序(由 next 指针连接),'#' 表示每层的末尾。

示例 2:

输入:root = []
输出:[]

这道题目说是二叉树,但116题目说是完整二叉树,其实没有任何差别,一样的代码一样的逻辑一样的味道

 完整代码如下

class Solution {
public:Node* connect(Node* root) {queue<Node*> que;if(root != NULL){que.push(root);}while(!que.empty()){// 如何判断每一层的个数//记录队列的大小int size = que.size();//建立当前节点Node* node;Node* prenode;// 遍历队列,放入数组for(int i = 0; i < size; i++ ){//如果遍历到这一层的头节点if(i == 0){node = que.front();prenode = node;}else{//出队列第一个元素放入数组node = que.front();//上一个节点的next指针指向当前节点prenode->next = node;//将前节点更新为当前节点prenode = node;}//将左右节点入队列if(node->left) que.push(node->left);if(node->right) que.push(node->right);//将当前节点弹出que.pop();}//这一层遍历完,将最后一个元素的next设置为nullnode->next = NULL;}return root;}
};

NO.104 二叉树的最大深度

给定一个二叉树 root ,返回其最大深度。

二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。

示例 1:

输入:root = [3,9,20,null,null,15,7]
输出:3

示例 2:

输入:root = [1,null,2]
输出:2

完整代码如下

class Solution {
public:int maxDepth(TreeNode* root) {queue<TreeNode*> que;//记录最大深度int depth = 0;if(root != NULL){que.push(root);}while(!que.empty()){// 如何判断每一层的个数//记录队列的大小int size = que.size();// 遍历队列,放入数组for(int i = 0; i < size; i++ ){TreeNode* node = que.front();//将左右节点入队列if(node->left) que.push(node->left);if(node->right) que.push(node->right);//将当前节点弹出que.pop();} depth++;}//循环结束说明遍历完最后一层,返回深度return depth;}
};

NO.111 二叉树的最小深度

给定一个二叉树,找出其最小深度。

最小深度是从根节点到最近叶子节点的最短路径上的节点数量。

说明:叶子节点是指没有子节点的节点。

示例 1:

输入:root = [3,9,20,null,null,15,7]
输出:2

示例 2:

输入:root = [2,null,3,null,4,null,5,null,6]
输出:5

完整代码如下

class Solution {
public:int minDepth(TreeNode* root) {queue<TreeNode*> que;//记录深度int depth = 0;if(root != NULL){que.push(root);}while(!que.empty()){// 如何判断每一层的个数//记录队列的大小int size = que.size();// 遍历队列,放入数组depth++;for(int i = 0; i < size; i++ ){TreeNode* node = que.front();//一旦找到叶子节点就返回深度if(node->left == NULL && node->right == NULL) return depth;//将左右节点入队列if(node->left) que.push(node->left);if(node->right) que.push(node->right);//将当前节点弹出que.pop();} }return 0;}
};

http://www.yayakq.cn/news/691434/

相关文章:

  • 网站开发网页设计北京师范大学出版社永兴县网站建设公司
  • 关于电子商务网站建设的参考文献网站建设业务前景
  • 网站建设三方协议设计必知的设计网站 039
  • 盐城网站开发基本流程自建wordpress 客户端
  • 自建社区网站网站所用的图片大小
  • 深圳网站设计兴田德润i简介qq是哪个开发运营公司的
  • swing做网站中国制造网 做网站费用
  • 网站建设需要注意的深圳市住房和建设局网站住房保障服务
  • 餐饮网站开发背景注册公司有几种类型
  • 凤岗网站设计广告公司简介怎么写
  • 贷款类网站怎样做私密浏览器视频
  • 深圳个人如何做网站设计网站安全检测报告
  • 万网 速成网站85度c蛋糕房网站系统建设
  • 网站做淘客html代码高亮
  • 只做网站搭建网站的企业
  • seo网络优化软件王通seo
  • 网站后台关键词怎么设置义乌十大进出口贸易公司
  • 苏州企业网站设计为女人网上量体做衣网站
  • 网站功能是什么公司网站建设价格标准
  • 方正园林建设监理中心网站网站企业业务员怎么做
  • 宁波网站制作出售英文网站开发公司哪家好
  • 旅游网站建设的目的及功能定位湖南省建设厅证件查询
  • 天津网站搜索排名优化定制旅游哪个网站好用
  • 网站如何运营wordpress中文用户名注册
  • 网站管理助手数据库godaddy上传网站
  • 苏州网站优化公司WordPress添加有趣的
  • 自己做网站销售网络营销的流程和方法
  • 做民宿最大的网站有谁做分销网站
  • asp个人网站论文苏州建站推广定制
  • 饭店网站模板企业公示信息查询系统湖北