leetcode做题笔记116. 填充每个节点的下一个右侧节点指针

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

复制代码
struct Node {
  int val;
  Node *left;
  Node *right;
  Node *next;
}

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

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

思路一:递归

cpp 复制代码
struct Node* connect(struct Node* root) {
	if(root==NULL)return NULL;
    else if(root->left == NULL || root->right == NULL) return root;

        root->left->next = root->right;
        struct Node* left = root->left->right;
        struct Node* right = root->right->left;
    while(left!=NULL&& right!=NULL){
        left->next = right;
        left = left->right;
        right = right->left;


    }
    root->left = connect(root->left);
        root->right = connect(root->right);
        return root;
    
}

分析:

本题要将每个next指针指向下一个右侧节点,可想到使用递归将左子树next指针指向right,再将右子树向下递归,最后输出root

总结:

本题考察递归的应用,将二叉树左子树指针指向右子树即可解决

相关推荐
车队老哥记录生活18 小时前
强化学习 RL 基础 3:随机近似方法 | 梯度下降
人工智能·算法·机器学习·强化学习
d111111111d18 小时前
STM32 电源管理模式全解析:低功耗场景该如何选型?
笔记·stm32·单片机·嵌入式硬件·学习
闲看云起18 小时前
LeetCode-day2:字母异位词分组分析
算法·leetcode·职场和发展
94621931zyn619 小时前
外观设置 - Cordova 与 OpenHarmony 混合开发实战
笔记·python
week_泽19 小时前
2、OpenCV Harris角点检测笔记
人工智能·笔记·opencv
NAGNIP19 小时前
Hugging Face 200页的大模型训练实录
人工智能·算法
Swift社区19 小时前
LeetCode 457 - 环形数组是否存在循环
算法·leetcode·职场和发展
AI视觉网奇19 小时前
ue python脚本 获取资产
笔记·ue5
小韩博19 小时前
小迪笔记45课之-PHP应用&SQL二次注入&堆叠执行&DNS带外&功能点&黑白盒条件
笔记·sql·网络安全·php
智嵌电子19 小时前
【笔记篇】【硬件基础篇】模拟电子技术基础 (童诗白) 第6章 信号的运算和处理
笔记