
二叉树展开为链表
发布日期:2021-05-04 13:50:02
浏览次数:21
分类:技术文章
本文共 955 字,大约阅读时间需要 3 分钟。
二叉树展开为链表
给你二叉树的根结点 root ,请你将它展开为一个单链表:
展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。
展开后的单链表应该与二叉树 先序遍历 顺序相同。
输入:root = [1,2,5,3,4,null,6]
输出:[1,null,2,null,3,null,4,null,5,null,6]
示例 2:
输入:root = [] 输出:[]
示例 3:
输入:root = [0] 输出:[0]
提示:
树中结点数在范围 [0, 2000] 内 -100 <= Node.val <= 100
思路:因为要把树转化为链表,所以他的左右节点要相连,他的左节点置为null,右节点指向左节点,然后再把之前的右节点连在当前树的最右端
例如示例1,节点2,步骤一,将2指向的左节点置为null,右节点指向左节点,此时如下
2 / \ null 3
步骤二,找到当前节点的最右端,然后指向之前的右节点
2 / \null 3 \ 4
局部展开就完成了,然后递归实现即可
class Solution { public void flatten(TreeNode root) { if(root == null) return; flatten(root.left); flatten(root.right); /***后序遍历***/ TreeNode left = root.left; TreeNode right = root.right; //先把左子树置为null,右子树指向左节点 root.left = null; root.right = left; //找到当前节点右子树的末端,把之前的右子树接上 TreeNode p = root; while(p.right != null) p = p.right; p.right = right; }}
发表评论
最新留言
不错!
[***.144.177.141]2025年03月26日 03时19分21秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
使用 top 命令了解 Fedora 的内存使用情况 | Linux 中国
2019-03-03
8皇后问题 递归 函数调用是重点
2019-03-03
1541 +1 *2 ²
2019-03-03
面试别慌!阿里专家带你从【入门+基础+进阶+项目】攻破SpringBoot
2019-03-03
【Java面试】30个 Java 集合面试必备的问题和答案
2019-03-03
华为鸿蒙到底是不是安卓系统套了个壳?
2019-03-03
window程序设计(1):第一个windows程序
2019-03-03
21.2.3总结
2019-03-03
方法的绑定机制-静态绑定和动态绑定
2019-03-03
Java取绝对值
2019-03-03
编写测试用例的实用小技巧
2019-03-03
c语言贪吃蛇控制台版
2019-03-03
【树形dp】P1273 有线电视网
2019-03-03
【最短路】P4408 [NOI2003]逃学的小孩
2019-03-03
2020电工(初级)考试及电工(初级)考试软件
2019-03-03
2020N1叉车司机模拟考试题库及N1叉车司机复审模拟考试
2019-03-03