原题
https://leetcode.cn/problems/flatten-binary-tree-to-linked-list/description/
思路
先序遍历 + 双指针
复杂度
时间:O(n)
空间:O(n)
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: Optional[TreeNode]) -> None:
"""
Do not return anything, modify root in-place instead.
"""
l = []
def preOrder(root):
if not root:
return
l.append(root)
preOrder(root.left)
preOrder(root.right)
preOrder(root)
for i in range(len(l)-1):
curr, next = l[i], l[i+1]
curr.left = None
curr.right = next
Go代码
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func flatten(root *TreeNode) {
l := []*TreeNode{}
var preOrder func(*TreeNode)
preOrder = func(root *TreeNode) {
if root == nil {
return
}
l = append(l, root)
preOrder(root.Left)
preOrder(root.Right)
}
preOrder(root)
for i := 0; i < len(l)-1; i++ {
curr, next := l[i], l[i+1]
curr.Left = nil
curr.Right = next
}
}

被折叠的 条评论
为什么被折叠?



