OJ练习第143题——二叉树展开为链表

二叉树展开为链表

力扣链接:114. 二叉树展开为链表

题目描述

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

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

示例

OJ练习第143题——二叉树展开为链表_第1张图片

Java代码

//后序遍历
class Solution {
    public void flatten(TreeNode root) {
        if(root == null) return;
        flatten(root.left);
        flatten(root.right);
        TreeNode temp = root.right;
        root.right = root.left;
        root.left = null;
        while(root.right != null) root = root.right;
        root.right = temp;

    }
}
//走前序遍历的相反 每次将当前的结点插到链表开头
class Solution {
    TreeNode h;
    public void flatten(TreeNode root) {
        dfs(root);
    }
    public void dfs(TreeNode root){
        if(root==null)return;
        dfs(root.right);
        dfs(root.left);
        root.right=h;
        h=root;
        root.left=null; 
    }
}

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/flatten-binary-tree-to-linked-list
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

你可能感兴趣的:(OJ练习,链表,数据结构,leetcode,java)