99. 恢复二叉搜索树

二叉搜索树中的两个节点被错误地交换。

请在不改变其结构的情况下,恢复这棵树。

示例 1:

输入: [1,3,null,null,2]

   1
  /
 3
  \
   2

输出: [3,1,null,null,2]

   3
  /
 1
  \
   2

1.简单但效率不高,利用中序得到所有值,做一个排序,然后再依次对原树复指

# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
class Solution(object):
    def recoverTree(self, root):
        point = []
        val = []
        def inOrder(t):
            if not t:
                return 
            inOrder(t.left)
            point.append(t)
            val.append(t.val)
            inOrder(t.right)
        inOrder(root)
        val = sorted(val)
        for i in range(len(val)):
            point[i].val = val[i]
        return root

 

你可能感兴趣的:(Leetcode)