微信改版,加星标不迷路!

每日一算法-填充同一层的兄弟节点

给定一个二叉树

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/天/养/一/个/好/习/惯

【每日一算法】填充同一层的兄弟节点相关推荐

  1. 116. 填充同一层的兄弟节点

    116. 填充同一层的兄弟节点 给定一个二叉树 struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode ...

  2. 【每日一算法】二叉树的层次遍历 II

    每日一算法-二叉树的层次遍历 II 题目 给定一个二叉树,返回其节点值自底向上的层次遍历. (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 例如: 给定二叉树 [3,9,20,null,n ...

  3. 【每日一算法】杨辉三角到底是什么?

    每日一算法-杨辉三角 题目 给定一个非负整数 numRows,生成杨辉三角的前 numRows 行. 在杨辉三角中,每个数是它左上方和右上方的数的和. 示例: 输入: 5 输出:[     [1], ...

  4. 【每日一算法】对称二叉树

    每日一算法-对称二叉树 题目 给定一个二叉树,检查它是否是镜像对称的. 例如,二叉树 [1,2,2,3,4,4,3] 是对称的. 1   / \  2   2 / \ / \ 3  4 4  3 但是 ...

  5. 【每日一算法】使用二分法解决x 的平方根问题

    每日一算法-x 的平方根 题目 实现 int sqrt(int x) 函数. 计算并返回 x 的平方根,其中 x 是非负整数. 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去. 示例 1: ...

  6. 【每日一算法】最大子序列和

    每日一算法-最大子序列和 题目 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4] ...

  7. 【每日一算法】杨辉三角 II

    每日一算法-杨辉三角 II 题目 给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行. 在杨辉三角中,每个数是它左上方和右上方的数的和. 示例: 输入: 3 输出: [1,3,3,1] ...

  8. 【每日一算法】二叉树的最小深度

    每日一算法-二叉树的最小深度 题目 给定一个二叉树,找出其最小深度. 最小深度是从根节点到最近叶子节点的最短路径上的节点数量. 说明: 叶子节点是指没有子节点的节点. 示例: 给定二叉树 [3,9,2 ...

  9. 【每日一算法】合并两个有序数组

    每日一算法-搜索插入位置 题目 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 ...

最新文章

  1. iOS 改变字符串中数字的颜色
  2. 阅读豆丁网----基于模型的混合多目标算法的研究
  3. android WebSocket 发送图片
  4. spring cloud(九):各组件常用配置参数
  5. (多表)关联update 超过两个字段以上
  6. python之堡垒机(第九天)
  7. 95-860-045-源码-定时器-InternalTimerService
  8. C#string与char互转
  9. javaEE开发中使用session同步和token机制来防止并发重复提交
  10. ELK日志分析系统迁移记录
  11. 【数据库】范围 通配符 排序(2020.3.18
  12. cad2019菜单栏怎么调出来_AutoCAD2019工具栏怎么调出来 工具栏没了找不到解决方法...
  13. 基于SSM的大学生就业信息管理系统
  14. UnityMMO资源整合服务器部署
  15. 用Multisim搭建三极管输出特性曲线及负载线产生电路
  16. 汉武帝发起的三大战役(河南、漠南、河西三大战役)
  17. “无法访问此网站”的一些原因
  18. Fakeapp2.2.0安装图文实录-见坑填坑
  19. 二叉树C++实现数据结构实验
  20. IE出现“XMLHttpRequest: 网络错误 0x80070005, 拒绝访问”的解决方案

热门文章

  1. 牛年快乐~新一年从甜蜜的烘焙里学AI
  2. 关于2021年及未来,人工智能的5大趋势预测
  3. 微软亚洲研究院成立OpenNetLab,探索以“数据为中心”AI网络研究新范式!
  4. 从谷歌AutoML到百度EasyDL,AI大生产时代,调参师不再是刚需
  5. 美亚排名超高的Docker入门书,不止简单易懂
  6. 专访思必驰初敏:离开微软、放弃阿里,一个语音交互的“实用主义者”
  7. Redis 缓存击穿(失效)、缓存穿透、缓存雪崩怎么解决?
  8. 盘点程序员写过的惊天 Bug
  9. 从Elasticsearch来看分布式系统架构设计,真是666~
  10. 推荐一款 Spring Boot 的 HTTP 客户端框架