0. 题目
1. 中序遍历 o(N) o(N)
class Solution(object):
def treeToDoublyList(self, root):
def ltr(cur):
if not cur: return
ltr(cur.left) #递归左子树
# 先遍历到最左的结点
if self.pre: #有前驱节点,不是第一个遍历的结点。
self.pre.right,cur.left = cur,self.pre
else: #前驱节点为None,则为第一个遍历的结点,也就是最左的结点。
self.head = cur
self.pre = cur #遍历过的结点为下一次的前驱节点
ltr(cur.right) #递归右子树
#中序遍历
if not root: return
self.pre = None
ltr(root)
self.head.left,self.pre.right = self.pre,self.head
return self.head