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-中等难度的主要内容,如果未能解决你的问题,请参考以下文章