码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2020-07-05 19:16:52      阅读:57      评论:0      收藏:0      [点我收藏+]

标签:linked   data-   node   图片   lazy   none   dfs   etc   else   

题目描述

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

 

例如,给定二叉树

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-中等难度

标签:linked   data-   node   图片   lazy   none   dfs   etc   else   

原文地址:https://www.cnblogs.com/xxxxxiaochuan/p/13247154.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!