leetcode每日刷题之树篇(二)114二叉树展开为链表

前言

今天学了一天的JAVA今天的最后一小时刷个树的题吧,这个题目是跟东哥学的,然后现在记录一下,希望明天把所有的方法都学一哈。

二叉树展开为链表

在这里插入图片描述

题目描述

在这里插入图片描述

题目解析

思想就是先将左边的子树变成链表,然后再把右边的变成链表,最后再将右边的插到左子树链表的尾部。

实现代码

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;
        //清空根节点的左子树,因为我们要整成链表
        root.left = null;
        root.right = left;
        TreeNode p =root;
        //遍历到链表尾部
        while(p.right!=null){
    
    
            p = p.right;
        } 
        //将右子树接到左子树上面
        p.right = right;
        
    }
}

总结

猜你喜欢

转载自blog.csdn.net/tan45du_yuan/article/details/108784248