# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def Convert(self, pRootOfTree):
# write code here
if not pRootOfTree:
return None
if not pRootOfTree.left and not pRootOfTree.right:
return pRootOfTree
# 处理左子树
left_tree = pRootOfTree.left
# 递归调用的时候不接受返回,子树处理完即可,只有到了最根节点才返回
self.Convert(pRootOfTree.left)
if left_tree:
while left_tree.right:
left_tree = left_tree.right
# 将左子树最大节点连接到根节点
left_tree.right,pRootOfTree.left = pRootOfTree,left_tree
# 处理右子树
right_tree = pRootOfTree.right
self.Convert(pRootOfTree.right)
if right_tree:
while right_tree.left:
right_tree = right_tree.left
right_tree.left,pRootOfTree.right = pRootOfTree,right_tree
while pRootOfTree.left:
pRootOfTree = pRootOfTree.left
return pRootOfTree