【每日一算法】填充同一层的兄弟节点
微信改版,加星标不迷路!
每日一算法-填充同一层的兄弟节点
给定一个二叉树
struct TreeLinkNode {TreeLinkNode *left;TreeLinkNode *right;TreeLinkNode *next; }
填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。
初始状态下,所有 next 指针都被设置为 NULL
。
说明:
你只能使用额外常数空间。
使用递归解题也符合要求,本题中递归程序占用的栈空间不算做额外的空间复杂度。
你可以假设它是一个完美二叉树(即所有叶子节点都在同一层,每个父节点都有两个子节点)。
示例:
给定完美二叉树,
1/ \2 3/ \ / \ 4 5 6 7
调用你的函数后,该完美二叉树变为:
1 -> NULL/ \2 -> 3 -> NULL/ \ / \ 4->5->6->7 -> NULL
解析
思路
两种思路
第一种思路:迭代
(此处忽略)
第二种思路:递归
由于是完全二叉树,所以若节点的左子结点存在的话,其右子节点必定存在,所以左子结点的next指针可以直接指向其右子节点,对于其右子节点的处理方法是,判断其父节点的next是否为空,若不为空,则指向其next指针指向的节点的左子结点,若为空则指向NULL。
实现代码
实现方式:递归
class Solution {public: int i = 0 ; void connect(TreeLinkNode *root) { i++; if(root && i == 1){ root->next = NULL; } if (!root) return; if (root->left) root->left->next = root->right; if (root->right) root->right->next = root->next? root->next->left : NULL; connect(root->left); connect(root->right); }};
需要注意的地方
本题的难点:属于简单题,考察二叉树的遍历,并且在遍历的过程中做点事情。
今日问题
你为华为而感到自豪骄傲吗?为什么?
打卡格式:打卡第n天,答:...
为什么打卡?戳下面你就知道了!
猛
戳
这
儿
21/天/养/一/个/好/习/惯
【每日一算法】填充同一层的兄弟节点相关推荐
- 116. 填充同一层的兄弟节点
116. 填充同一层的兄弟节点 给定一个二叉树 struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode ...
- 【每日一算法】二叉树的层次遍历 II
每日一算法-二叉树的层次遍历 II 题目 给定一个二叉树,返回其节点值自底向上的层次遍历. (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 例如: 给定二叉树 [3,9,20,null,n ...
- 【每日一算法】杨辉三角到底是什么?
每日一算法-杨辉三角 题目 给定一个非负整数 numRows,生成杨辉三角的前 numRows 行. 在杨辉三角中,每个数是它左上方和右上方的数的和. 示例: 输入: 5 输出:[ [1], ...
- 【每日一算法】对称二叉树
每日一算法-对称二叉树 题目 给定一个二叉树,检查它是否是镜像对称的. 例如,二叉树 [1,2,2,3,4,4,3] 是对称的. 1 / \ 2 2 / \ / \ 3 4 4 3 但是 ...
- 【每日一算法】使用二分法解决x 的平方根问题
每日一算法-x 的平方根 题目 实现 int sqrt(int x) 函数. 计算并返回 x 的平方根,其中 x 是非负整数. 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去. 示例 1: ...
- 【每日一算法】最大子序列和
每日一算法-最大子序列和 题目 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4] ...
- 【每日一算法】杨辉三角 II
每日一算法-杨辉三角 II 题目 给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行. 在杨辉三角中,每个数是它左上方和右上方的数的和. 示例: 输入: 3 输出: [1,3,3,1] ...
- 【每日一算法】二叉树的最小深度
每日一算法-二叉树的最小深度 题目 给定一个二叉树,找出其最小深度. 最小深度是从根节点到最近叶子节点的最短路径上的节点数量. 说明: 叶子节点是指没有子节点的节点. 示例: 给定二叉树 [3,9,2 ...
- 【每日一算法】合并两个有序数组
每日一算法-搜索插入位置 题目 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 ...
最新文章
- iOS 改变字符串中数字的颜色
- 阅读豆丁网----基于模型的混合多目标算法的研究
- android WebSocket 发送图片
- spring cloud(九):各组件常用配置参数
- (多表)关联update 超过两个字段以上
- python之堡垒机(第九天)
- 95-860-045-源码-定时器-InternalTimerService
- C#string与char互转
- javaEE开发中使用session同步和token机制来防止并发重复提交
- ELK日志分析系统迁移记录
- 【数据库】范围 通配符 排序(2020.3.18
- cad2019菜单栏怎么调出来_AutoCAD2019工具栏怎么调出来 工具栏没了找不到解决方法...
- 基于SSM的大学生就业信息管理系统
- UnityMMO资源整合服务器部署
- 用Multisim搭建三极管输出特性曲线及负载线产生电路
- 汉武帝发起的三大战役(河南、漠南、河西三大战役)
- “无法访问此网站”的一些原因
- Fakeapp2.2.0安装图文实录-见坑填坑
- 二叉树C++实现数据结构实验
- IE出现“XMLHttpRequest: 网络错误 0x80070005, 拒绝访问”的解决方案
热门文章
- 牛年快乐~新一年从甜蜜的烘焙里学AI
- 关于2021年及未来,人工智能的5大趋势预测
- 微软亚洲研究院成立OpenNetLab,探索以“数据为中心”AI网络研究新范式!
- 从谷歌AutoML到百度EasyDL,AI大生产时代,调参师不再是刚需
- 美亚排名超高的Docker入门书,不止简单易懂
- 专访思必驰初敏:离开微软、放弃阿里,一个语音交互的“实用主义者”
- Redis 缓存击穿(失效)、缓存穿透、缓存雪崩怎么解决?
- 盘点程序员写过的惊天 Bug
- 从Elasticsearch来看分布式系统架构设计,真是666~
- 推荐一款 Spring Boot 的 HTTP 客户端框架