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

总结:

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

相关推荐
ゞ 正在缓冲99%…7 分钟前
leetcode1547.切棍子的最小成本
数据结构·算法·leetcode·动态规划
2401_8414956419 分钟前
【LeetCode刷题】移动零
数据结构·python·算法·leetcode·数组·双指针法·移动零
开心星人1 小时前
Leetcode hot100 Java刷题(二)
java·算法·leetcode
hn小菜鸡1 小时前
LeetCode 153.寻找旋转排序数组中的最小值
数据结构·算法·leetcode
小蜜蜂爱编程2 小时前
逻辑回归学习笔记
笔记·学习·逻辑回归
摇滚侠2 小时前
Vue 项目实战《尚医通》,完成预约通知业务,笔记21
前端·vue.js·笔记·前端框架
DeniuHe2 小时前
逻辑回归(Logistic Regression)详细解释与公式推导
算法·机器学习·逻辑回归
迅量科技资讯分享2 小时前
手机拍照明晰度评估:传感器尺寸像素数量与处理器算法解析
算法·三星·像素
liu****2 小时前
12.线程同步与互斥
linux·数据结构·c++·算法·1024程序员节
YJlio2 小时前
VMMap 学习笔记(8.3):VMMap 窗口全解析——内存类型、指标含义、颜色视图怎么读
笔记·学习·visual studio