zoukankan      html  css  js  c++  java
  • 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)

  • 相关阅读:
    GitHub具体教程
    hadoop 集群及hbase集群的pid文件存放位置
    MATLAB中导入数据:importdata函数
    MFCC可视化
    Html的空格显示
    CSS:CSS 颜色
    CSS:CSS 单位
    CSS:CSS 网络安全字体组合
    CSS3:CSS 听觉参考手册
    CSS:CSS 选择器参考手册
  • 原文地址:https://www.cnblogs.com/xxxxxiaochuan/p/13247154.html
Copyright © 2011-2022 走看看