题解 | #找到搜索二叉树中两个错误的节点#
找到搜索二叉树中两个错误的节点
http://www.nowcoder.com/practice/4582efa5ffe949cc80c136eeb78795d6
首先中序遍历搜索树,应为连续递增数列,先后找出位置错误的两个数字,从前往后找其中较大的数字,从后往前找较小的数字,最后升序输出
class Solution:
def search_tree(self, root):
if root == None:
return []
list_node = self.search_tree(root.left)
list_node.append(root.val)
list_node += self.search_tree(root.right)
return list_node
def findError(self , root: TreeNode) -> List[int]:
# write code here
list1 = self.search_tree(root)
for i in range(len(list1)-1):
if list1[i] > list1[i+1]:
a = list1[i]
break
for i in range(len(list1)-1, -1, -1):
if list1[i] < list1[i-1]:
b = list1[i]
break
return [min(a, b), max(a, b)]