二叉树展开为链表

Posted gongyanzh

tags:

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

二叉树展开为链表

LeetCode入口??????No.114

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

例如,给定二叉树

    1
   /   2   5
 /    3   4   6

将其展开为:

1
   2
       3
           4
               5
                   6

思路

源自LeetCode题解

  1. 将左子树插入到右子树的地方
  2. 将原来的右子树接到左子树的最右边节点
  3. 考虑新的右子树的根节点,一直重复上边的过程,直到新的右子树为 null
    1
   /   2   5
 /    3   4   6

//将 1 的左子树插入到右子树的地方
    1
           2         5
     /              3   4         6        
//将原来的右子树接到左子树的最右边节点
    1
           2          
     /           
    3   4  
                   5
                       6
            
 //将 2 的左子树插入到右子树的地方
    1
           2          
                 
        3       4  
                                   5
                                       6   
        
 //将原来的右子树接到左子树的最右边节点
    1
           2          
                 
        3      
                   4  
                       5
                           6         

python

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def flatten(self, root: TreeNode) -> None:
        """
        Do not return anything, modify root in-place instead.
        """
        if not root:
            return None

        while root:
            #1.左子树空,考虑下个节点
            if not root.left:
                root = root.right
            #3.右子树接到原左子树的最右节点
            else:
                pre = root.left
                while pre.right:
                    pre = pre.right
                pre.right = root.right        
                #2.左子树插入到右子树的地方
                root.right = root.left
                root.left = None
                root = root.right

对称二叉

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

LeetCode第114题—二叉树展开为链表—Python实现

⭐算法入门⭐《二叉树》中等01 —— LeetCode 114. 二叉树展开为链表

二叉树--二叉树展开为链表

二叉树展开为链表

二叉树展开为链表

[LeetCode] 114. 二叉树展开为链表 ☆☆☆(深度遍历)