
填充每个节点的下一个右侧节点指针
发布日期:2021-05-04 13:50:01
浏览次数:14
分类:技术文章
本文共 1117 字,大约阅读时间需要 3 分钟。
填充每个节点的下一个右侧节点指针
给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:
struct Node {
int val; Node *left; Node *right; Node *next; } 填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。 初始状态下,所有 next 指针都被设置为 NULL。二叉树遍历一般是分为前序/中序/后序,框架如下:
traverse(Node root){ //前序遍历 traverse(root.left); //中序遍历 traverse(root.right); //后序遍历}
方式一:此题目可以用二叉树的前序遍历
此代码会发现示例中,没有相同父节点,5,6他们两个不能处理,所以需要改造一下代码
class Solution { public Node connect(Node root) { if (root == null || root.left == null) return null; root.left.next = root.right; connect(root.left); connect(root.left); return root; }}
改造如下:
class Solution { public Node connect(Node root) { if (root == null) return null; contentTwo(root.left, root.right); return root; } public void contentTwo(Node node1, Node node2){ if(node1 == null || node2 == null) return; //前序遍历 node1.next = node2; contentTwo(node1.left, node1.right); contentTwo(node2.left, node2.right); //连接类似示例5,6节点的情况 contentTwo(node1.right, node2.left); }}
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年03月18日 00时06分36秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
tqOS的PendSV抢占式任务调度
2019-03-04
U-boot从tftp服务器启动,挂载到NFS根文件系统
2019-03-04
AD PCB画图时整体去掉一条线
2019-03-04
常用运放电路分析
2019-03-04
常用温度传感器的采集和换算方法
2019-03-04
AD Tips巧用Altium Transparent 2D视图布置电源过孔
2019-03-04
ubuntu18.04编译webkitgtk
2019-03-04
腾讯测试员:8年经验分享自学软件测试学习路线【附带JAVA学习路线】
2019-03-04
最短作业优先(SJF)调度算法
2019-03-04
基于arduino-due,jlink以及OpenOCD搭建zephyr调试平台
2019-03-04
数组使用说明
2019-03-04
测量理论定义和σ-algebras
2019-03-04
CUDA编成:从GPU的物理体系结构到逻辑结构
2019-03-04
安全工具大全(持续补充中)
2019-03-04
搭建自己的病毒扫描系统clamav-原版教程
2019-03-04
Taro微信小程序开发技巧之全局公共组件(如全局公共弹框)
2019-03-04
【实时渲染】Unity Shader实现视差贴图 法线贴图
2019-03-04