七七老师の白日梦
首页项目归档照片墙音乐灵境说说杂谈友链关于
封面

二叉树展开为链表:移动置零

写作时间:2026-08-05 09:08:09

‍

给你二叉树的根结点 root ,请你将它展开为一个单链表:

  • 展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。
  • 展开后的单链表应该与二叉树 先序遍历 顺序相同。

思考

这道题怎么做?先序遍历!左右节点!来一个中间量存储左节点,然后加到右节点去

代码

class Solution {
    public void flatten(TreeNode root) {
//        定义当前节点
        TreeNode cur = root;
//节点不空就循环
        while (cur != null) {
//            左节点不为空循环
            if (cur.left != null) {
//                定义一个前驱节点
                TreeNode pre = cur.left;
//左不空循环
                while (pre.right != null) {
                    pre = pre.right;
                }
//将不空的右节点赋给前驱节点的右节点
                pre.right = cur.right;
//左节点赋给右节点
                cur.right = cur.left;
//删除原左节点
                cur.left = null;
            }
//            节点后移
            cur = cur.right;
        }
    }
}

‍

avatar

七七老师

分享代码日常

RECOMMENDED

七七旧事:复盘并改变写博客的方式

2026-07-02 22:54:38

字母异位词

2026-07-04 22:22:08

寻找两个正序数组的中位数:合并与二分

2026-07-08 15:56:26

Table of Contents