114. 二叉树展开为链表

筅森魡賤 提交于 2020-02-07 16:17:12

1 题目

链接:二叉树展开为链表
在这里插入图片描述

2 Python

2.1 方法一:递归

思想:左子树接到根节点的右子树位置,右子树接到左子树的右子树位置
从二叉树的左下角往右上角逐个操作

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

class Solution:
    def flatten(self, root: TreeNode) -> None:
        """
        Do not return anything, modify root in-place instead.
        """
        # 出口函数
        if not root:
            return None;
        # 递归过程
        self.flatten(root.right);
        self.flatten(root.left);
        if root.left:
            right = root.right;
            root.right = root.left;
            root.left = None;
            # 找到左子树(已经接到了根节点的右子树位置)最下层的右子树
            while root.right:
                root = root.right;
            root.right = right;
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!