114. 二叉树展开为链表-二叉树,dfs-中等难度

Posted xxxxxiaochuan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了114. 二叉树展开为链表-二叉树,dfs-中等难度相关的知识,希望对你有一定的参考价值。

题目描述

给定一个二叉树,原地将它展开为一个单链表。

 

例如,给定二叉树

1
/
2 5
/
3 4 6
将其展开为:

1

2

3

4

5

6

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/flatten-binary-tree-to-linked-list

解答

# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
‘‘‘

dfs,以从底层到顶层的顺序,依次展开。

‘‘‘
class Solution(object):
    def flatten(self, root):
        if root == None:
            return
        def dfs(root):
            if root.left != None:
                dfs(root.left)
            if root.right != None:
                dfs(root.right)
            if root.left != None and root.right != None:
                r = root
                if root.left.right != None:
                    r = root.left.right
                    while r.right != None:
                        r = r.right
                    r.right = root.right
                    root.right = root.left
                    root.left = None
                else:
                    root.left.right = root.right
                    root.right = root.left
                    root.left = None
            elif root.left != None and root.right == None:
                root.right = root.left
                root.left = None
            elif root.left == None and root.right != None:
                pass
            else:
                return 
        dfs(root)

技术图片

以上是关于114. 二叉树展开为链表-二叉树,dfs-中等难度的主要内容,如果未能解决你的问题,请参考以下文章

leetcode 114. 二叉树展开为链表(dfs)

leetcode中等114二叉树展开为链表

Leetcode No.114 二叉树展开为链表(DFS)

LeetCode(114): 二叉树展开为链表

LeetCode Java刷题笔记— 114. 二叉树展开为链表

LeetCode Java刷题笔记— 114. 二叉树展开为链表