利用pre节点+迭代将二叉树展开为链表

图片说明
还是有点难的,但抓住重点 pre节点 + 迭代

class Solution {
    public void flatten(TreeNode root) {
        while(root != null){
            if(root.left == null){
                root = root.right;
            }else{
                //先找到左子树最右的节点
                TreeNode pre = root.left;
                while(pre != null){
                    pre = pre.right;
                }
                //再将最右的节点去链接root的右节点,就是先序遍历
                pre.right = root.right;
                //按照题目,right要指向下一个节点
                root.right = root.left;
                //left置为空
                root.left = null;
                //迭代下去
                root = root.right;
            }
        }
    }
}
全部评论

相关推荐

2025-12-18 22:04
已编辑
杭州电子科技大学 Java
程序员花海:技能放最后 另外这两个项目写的太简单了 没有业务没有技术栈 这种简历连HR都过不了
实习简历求拷打
点赞 评论 收藏
分享
脑袋锈住了:你这算啥,哥们中科院中强所硕士,本科211,叫我去干分拣,时薪20
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务