我对不起数据结构老师,全忘完了
在参考了评论区之后,代码如下:
class Solution:
def Convert(self , pRootOfTree: TreeNode) -> TreeNode:
if not pRootOfTree:
return None
if not pRootOfTree.left and not pRootOfTree.right:
return pRootOfTree
left = self.Convert(pRootOfTree.left)
p = left
while left and p.right:
p = p.right
if left:
p.right = pRootOfTree
pRootOfTree.left = p
right = self.Convert(pRootOfTree.right)
if right:
right.left = pRootOfTree
pRootOfTree.right = right
return left if left else pRootOfTree
首先判断 pRootOfTree,若空返回 None,若叶子节点返回自身
left 接收左子树形成的双链表表头,通过下方的 while 循环寻找双链表的表尾
若 left 存在则一定能找到表尾,令 pRootOfTree 加入双链表,否则 pRootOfTree 为双链表表头
right 接收右子树形成的双链表表头,若存在则将其加入双链表
最后返回双链表的头结点
对不起我应该好好学数据结构的